Browse Source

Merge pull request #1086 from Linksoft-ID/12.0-mig-web_m2x_options

12.0 mig web m2x options
pull/1204/head
Pedro M. Baeza 5 years ago
committed by GitHub
parent
commit
2296c72d96
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 196
      web_m2x_options/README.rst
  2. 1
      web_m2x_options/__init__.py
  3. 26
      web_m2x_options/__manifest__.py
  4. 102
      web_m2x_options/i18n/ar.po
  5. 104
      web_m2x_options/i18n/de.po
  6. 101
      web_m2x_options/i18n/es.po
  7. 101
      web_m2x_options/i18n/fi.po
  8. 101
      web_m2x_options/i18n/fr.po
  9. 103
      web_m2x_options/i18n/hr.po
  10. 101
      web_m2x_options/i18n/it.po
  11. 102
      web_m2x_options/i18n/nl_NL.po
  12. 105
      web_m2x_options/i18n/pt_BR.po
  13. 102
      web_m2x_options/i18n/sl.po
  14. 101
      web_m2x_options/i18n/tr.po
  15. 97
      web_m2x_options/i18n/web_m2x_options.pot
  16. 1
      web_m2x_options/models/__init__.py
  17. 12
      web_m2x_options/models/ir_config_parameter.py
  18. 11
      web_m2x_options/readme/CONTRIBUTORS.rst
  19. 10
      web_m2x_options/readme/DESCRIPTION.rst
  20. 6
      web_m2x_options/readme/ROADMAP.rst
  21. 88
      web_m2x_options/readme/USAGE.rst
  22. BIN
      web_m2x_options/static/description/icon.png
  23. 412
      web_m2x_options/static/description/index.html
  24. 377
      web_m2x_options/static/src/js/form.js
  25. 13
      web_m2x_options/static/src/xml/base.xml
  26. 12
      web_m2x_options/views/view.xml

196
web_m2x_options/README.rst

@ -0,0 +1,196 @@
===============
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/12.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-12-0/web-12-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/12.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::
...
<field name="partner_id" options="{'limit': 10, 'create': false, 'create_edit': false, 'search_more':true 'field_color':'state', 'colors':{'active':'green'}}"/>
...
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 <https://github.com/OCA/web/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 <https://github.com/OCA/web/issues/new?body=module:%20web_m2x_options%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* ACSONE SA/NV
* 0k.io
* Tecnativa
Contributors
~~~~~~~~~~~~
* David Coninckx <davconinckx@gmail.com>
* Emanuel Cino <ecino@compassion.ch>
* Holger Brunn <hbrunn@therp.nl>
* Nicolas JEUDY <nicolas@sudokeys.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Zakaria Makrelouf <z.makrelouf@gmail.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Jairo Llopis <jairo.llopis@tecnativa.com>
* David Vidal <david.vidal@tecnativa.com>
* Ernesto Tejeda <ernesto.tejeda87@gmail.com>
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 <https://github.com/OCA/web/tree/12.0/web_m2x_options>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

1
web_m2x_options/__init__.py

@ -0,0 +1 @@
from . import models

26
web_m2x_options/__manifest__.py

@ -0,0 +1,26 @@
# Copyright 2015 0k.io
# Copyright 2016 ACSONE SA/NV
# Copyright 2017 Tecnativa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": 'web_m2x_options',
"version": "12.0.1.0.0",
'category': 'Web',
"author": "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,
}

102
web_m2x_options/i18n/ar.po

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "إلغاء"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "إنشاء \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, python-format
msgid "Create and Edit..."
msgstr "إنشاء وتحرير ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "البحث عن المزيد ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

104
web_m2x_options/i18n/de.po

@ -0,0 +1,104 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Rudolf Schnapka <rs@techno-flex.de>, 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: 2018-01-03 03:50+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>, 2018\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"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Abbrechen"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr "Anlegen"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Anlegen \"<strong>%s</strong>"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, 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:261
#, 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:42
#, 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:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Suche weitere..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, 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?"
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

101
web_m2x_options/i18n/es.po

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr "Crear"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Crear \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, 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:261
#, 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:42
#, 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:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Buscar más..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, 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?"
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

101
web_m2x_options/i18n/fi.po

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Peru"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Luo \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, 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:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Hae lisää..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

101
web_m2x_options/i18n/fr.po

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 2017\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"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Creer \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, 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:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Rechercher plus..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

103
web_m2x_options/i18n/hr.po

@ -0,0 +1,103 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Otkaži"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr "Kreiraj"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Kreiraj \" <strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, 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:261
#, 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:42
#, 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:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Traži dalje..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, 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?"
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

101
web_m2x_options/i18n/it.po

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Annulla"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Crea \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, 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:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Cerca altro..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

102
web_m2x_options/i18n/nl_NL.po

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 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 <hageman.p@gmail.com>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Annuleer"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr "Aanmaken"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, python-format
msgid "Create and Edit..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

105
web_m2x_options/i18n/pt_BR.po

@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 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-08-04 13:34+0000\n"
"Last-Translator: Rodrigo Macedo <rmsolucoeseminformatic4@gmail.com>\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.1.1\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr "Criar"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Criar \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, 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:261
#, 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:42
#, 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:267
#, 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:341
#, python-format
msgid "Open: "
msgstr "Abrir: "
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Buscar mais..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, 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?"
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

102
web_m2x_options/i18n/sl.po

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "Preklic"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Ustvari \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, 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:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Poišči več..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

101
web_m2x_options/i18n/tr.po

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 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 <transbot@odoo-community.org>, 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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr "İptal"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr "Oluştur \"<strong>%s</strong>\""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, 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:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr "Daha Fazla..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

97
web_m2x_options/i18n/web_m2x_options.pot

@ -0,0 +1,97 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.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:8
#, 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:52
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:28
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#, python-format
msgid "Create and Edit..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:42
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#, python-format
msgid "No results to show..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:341
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#, python-format
msgid "Search More..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""
#. module: web_m2x_options
#: model:ir.model,name:web_m2x_options.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""

1
web_m2x_options/models/__init__.py

@ -0,0 +1 @@
from . import ir_config_parameter

12
web_m2x_options/models/ir_config_parameter.py

@ -0,0 +1,12 @@
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"])

11
web_m2x_options/readme/CONTRIBUTORS.rst

@ -0,0 +1,11 @@
* David Coninckx <davconinckx@gmail.com>
* Emanuel Cino <ecino@compassion.ch>
* Holger Brunn <hbrunn@therp.nl>
* Nicolas JEUDY <nicolas@sudokeys.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
* Zakaria Makrelouf <z.makrelouf@gmail.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Jairo Llopis <jairo.llopis@tecnativa.com>
* David Vidal <david.vidal@tecnativa.com>
* Ernesto Tejeda <ernesto.tejeda87@gmail.com>

10
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.

6
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.

88
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::
...
<field name="partner_id" options="{'limit': 10, 'create': false, 'create_edit': false, 'search_more':true 'field_color':'state', 'colors':{'active':'green'}}"/>
...

BIN
web_m2x_options/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 9.2 KiB

412
web_m2x_options/static/description/index.html

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
<title>Add new options for many2one field</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="add-new-options-for-many2one-field">
<h1 class="title">Add new options for many2one field</h1>
<div class="section" id="description">
<h1>Description</h1>
<p>This modules modifies &quot;many2one&quot; and &quot;many2manytags&quot; form widgets so as to add some new display
control options.</p>
<p><strong>New: support many2manytags widget !</strong></p>
<p><strong>New: support global option management with ir.config_parameter !</strong></p>
<p>Options provided includes possibility to remove &quot;Create...&quot; and/or &quot;Create and
Edit...&quot; 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.</p>
<p>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.</p>
</div>
<div class="section" id="requirements">
<h1>Requirements</h1>
<p>Was tested on openerp 8.0, trunk, saas-5 branch. New way to import js file. (thanks to tfossoul)</p>
</div>
<div class="section" id="new-options">
<h1>New options</h1>
<p><tt class="docutils literal">create</tt> <em>boolean</em> (Default: depends if user have create rights)</p>
<blockquote>
Whether to display the &quot;Create...&quot; entry in dropdown panel.</blockquote>
<p><tt class="docutils literal">create_edit</tt> <em>boolean</em> (Default: depends if user have create rights)</p>
<blockquote>
Whether to display &quot;Create and Edit...&quot; entry in dropdown panel</blockquote>
<p><tt class="docutils literal">m2o_dialog</tt> <em>boolean</em> (Default: depends if user have create rights)</p>
<blockquote>
Whether to display the many2one dialog in case of validation error.</blockquote>
<p><tt class="docutils literal">limit</tt> <em>int</em> (Default: openerp default value is <tt class="docutils literal">7</tt>)</p>
<blockquote>
Number of displayed record in drop-down panel</blockquote>
</div>
<div class="section" id="ir-config-parameter-options">
<h1>ir.config_parameter options</h1>
<p>Now you can disable &quot;Create...&quot; and &quot;Create and Edit...&quot; entry for all widgets in the odoo instance.
If you disable one option, you can enable it for particular field by setting &quot;create: True&quot; option directly on the field definition.</p>
<p><tt class="docutils literal">web_m2x_options.create</tt> <em>boolean</em> (Default: depends if user have create rights)</p>
<blockquote>
Whether to display the &quot;Create...&quot; entry in dropdown panel for all fields in the odoo instance.</blockquote>
<p><tt class="docutils literal">web_m2x_options.create_edit</tt> <em>boolean</em> (Default: depends if user have create rights)</p>
<blockquote>
Whether to display &quot;Create and Edit...&quot; entry in dropdown panel for all fields in the odoo instance.</blockquote>
<p><tt class="docutils literal">web_m2x_options.limit</tt> <em>int</em> (Default: openerp default value is <tt class="docutils literal">7</tt>)</p>
<blockquote>
Number of displayed record in drop-down panel for all fields in the odoo instance</blockquote>
<p>To add these parameters go to Configuration -&gt; Technical -&gt; Parameters -&gt; System Parameters and add new parameters like:</p>
<ul class="simple">
<li>web_m2x_options.create: False</li>
<li>web_m2x_options.create_edit: False</li>
<li>web_m2x_options.limit: 10</li>
</ul>
</div>
<div class="section" id="example">
<h1>Example</h1>
<p>Your XML form view definition could contain:</p>
<pre class="literal-block">
...
&lt;field name=&quot;partner_id&quot; options=&quot;{'limit': 10, 'create': false, 'create_edit': false}&quot;/&gt;
...
</pre>
</div>
<div class="section" id="note">
<h1>Note</h1>
<p>Double check that you have no inherited view that remote <tt class="docutils literal">options</tt> you set on a field !
If nothing work, add a debugger in the first ligne of <tt class="docutils literal">get_search_result method</tt> and enable debug mode in OpenERP. When you write something in a many2one field, javascript debugger should pause. If not verify your installation.</p>
</div>
</div>
</body>
</html>

377
web_m2x_options/static/src/js/form.js

@ -0,0 +1,377 @@
/* 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.done(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;
var def = $.Deferred();
this.orderer.add(def);
// add options limit used to change number of selections record
// returned.
if (!_.isUndefined(this.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.ir_options['web_m2x_options.limit'], 10);
}
if (typeof this.nodeOptions.limit === 'number') {
this.limit = this.nodeOptions.limit;
}
// add options field_color and colors to color item(s) depending on field_color value
this.field_color = this.nodeOptions.field_color;
this.colors = this.nodeOptions.colors;
var context = this.record.getContext(this.recordParams);
var domain = this.record.getDomain(this.recordParams);
var blacklisted_ids = this._getSearchBlacklist();
if (blacklisted_ids.length > 0) {
domain.push(['id', 'not in', blacklisted_ids]);
}
this._rpc({
model: this.field.relation,
method: "name_search",
kwargs: {
name: search_val,
args: domain,
operator: "ilike",
limit: this.limit + 1,
context: context,
}
}).then(function (result) {
// possible selections for the m2o
var values = _.map(result, function (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 index in values) {
value_ids.push(values[index].id);
}
self._rpc({
model: self.field.relation,
method: 'search_read',
fields: [self.field_color],
domain: [['id', 'in', value_ids]]
}).then(function (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 = '<span style="color:' + color + '">' + value.label + '</span>';
break;
}
}
}
def.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 () {
// limit = 80 for improving performance, similar
// to Odoo implementation here:
// https://github.com/odoo/odoo/commit/8c3cdce539d87775b59b3f2d5ceb433f995821bf
self._rpc({
model: self.field.relation,
method: 'name_search',
kwargs: {
name: search_val,
args: domain,
operator: "ilike",
limit: 80,
context: context,
},
})
.then(self._searchCreatePopup.bind(self, "search"));
},
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 "<strong>%s</strong>"'),
$('<span />').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)) {
def.resolve(values);
}
});
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();
}
},
});
});

13
web_m2x_options/static/src/xml/base.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2017 Jairo Llopis <jairo.llopis@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<templates xml:space="preserve">
<t t-extend="FieldMany2One">
<t t-jquery=".o_external_button" t-operation="attributes">
<attribute name="t-if">
!(widget.nodeOptions.no_open || widget.nodeOptions.no_open_edit)
</attribute>
</t>
</t>
</templates>

12
web_m2x_options/views/view.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="m2x options assets"
inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript"
src="/web_m2x_options/static/src/js/form.js"></script>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save