Browse Source

Merge pull request #622 from Tecnativa/10.0-mig-web_m2x_options

10.0 mig web m2x options
pull/593/merge
Pedro M. Baeza 8 years ago
committed by GitHub
parent
commit
39369331ac
  1. 83
      web_m2x_options/README.rst
  2. 1
      web_m2x_options/__init__.py
  3. 12
      web_m2x_options/__manifest__.py
  4. 85
      web_m2x_options/i18n/ar.po
  5. 85
      web_m2x_options/i18n/de.po
  6. 86
      web_m2x_options/i18n/es.po
  7. 85
      web_m2x_options/i18n/fi.po
  8. 85
      web_m2x_options/i18n/fr.po
  9. 78
      web_m2x_options/i18n/hr.po
  10. 85
      web_m2x_options/i18n/it.po
  11. 85
      web_m2x_options/i18n/pt_BR.po
  12. 85
      web_m2x_options/i18n/sl.po
  13. 85
      web_m2x_options/i18n/tr.po
  14. 257
      web_m2x_options/static/src/js/form.js
  15. 13
      web_m2x_options/static/src/xml/base.xml
  16. 17
      web_m2x_options/views/view.xml

83
web_m2x_options/README.rst

@ -1,35 +1,38 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
================================== ==================================
Add new options for many2one field Add new options for many2one field
================================== ==================================
Description Description
----------- -----------
This modules modifies "many2one" and "many2manytags" form widgets so as to add some new display This modules modifies "many2one" and "many2manytags" form widgets so as to add some new display
control options. 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 Options provided includes possibility to remove "Create..." and/or "Create and
Edit..." entries from many2one drop down. You can also change default number of 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 proposition appearing in the drop-down. Or prevent the dialog box poping in
case of validation error. case of validation error.
If not specified, the module will avoid proposing any of the create options If not specified, the module will avoid proposing any of the create options
if the current user have no permission rights to create the related object.
if the current user has no permission rights to create the related object.
Usage
=====
Requirements
------------
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/162/8.0
Was tested on openerp 8.0, trunk, saas-5 branch. New way to import js file. (thanks to tfossoul)
For further information, please visit:
* https://www.odoo.com/forum/help-1
New options
-----------
in the field's options dict
---------------------------
``create`` *boolean* (Default: depends if user have create rights) ``create`` *boolean* (Default: depends if user have create rights)
@ -61,7 +64,13 @@ New options
A dictionary to link field value with a HTML color. A dictionary to link field value with a HTML color.
This option has to be used with field_color. This option has to be used with field_color.
``no_open_edit`` *boolean* (Default: value of ``no_open`` which is ``False`` if not set)
Causes a many2one not to offer to click through in edit mode, but well in read mode
``open`` *boolean* (Default: ``False``)
Makes many2many_tags buttons that open the linked resource
ir.config_parameter options ir.config_parameter options
--------------------------- ---------------------------
@ -107,9 +116,53 @@ 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'}}"/> <field name="partner_id" options="{'limit': 10, 'create': false, 'create_edit': false, 'search_more':true 'field_color':'state', 'colors':{'active':'green'}}"/>
... ...
Note
----
Known issues
============
Double check that you have no inherited view that remove ``options`` you set on a field !
If nothing works, add a debugger in the first line of ``get_search_result method`` and enable debug mode in Odoo. When you write something in a many2one field, javascript debugger should pause. If not verify your installation.
Roadmap
=======
- Instead of making the tags rectangle clickable, I think it's better to put the text as a clickable link, so we will get a consistent behaviour/aspect with other clickable elements (many2one...).
- In edit mode, it would be great to add an icon like the one on many2one fields to allow to open the many2many in a popup window.
- Include this feature as a configurable option via parameter to have this behaviour by default in all many2many tags.
Bug Tracker
===========
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
`here <https://github.com/OCA/web/issues/new?body=module:%20web_m2x_options%0Aversion:%208.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
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>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* David Vidal <david.vidal@tecnativa.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
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.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

1
web_m2x_options/__init__.py

@ -0,0 +1 @@
# coding: utf-8

12
web_m2x_options/__manifest__.py

@ -2,13 +2,17 @@
{ {
"name": 'web_m2x_options', "name": 'web_m2x_options',
"version": "8.0.0.2",
"version": "10.0.1.0.0",
"depends": [ "depends": [
'base', 'base',
'web', 'web',
], ],
'qweb': [
'static/src/xml/base.xml',
],
'license': 'AGPL-3',
'data': ['views/view.xml'], 'data': ['views/view.xml'],
"author": "0k.io,Odoo Community Association (OCA)",
'installable': False,
"active": False,
"author": "ACSONE SA/NV, 0k.io, Tecnativa, "
"Odoo Community Association (OCA)",
'installable': True,
} }

85
web_m2x_options/i18n/ar.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, python-format
msgid "Create and Edit..."
msgstr "إنشاء وتحرير ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "البحث عن المزيد ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/de.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Suche weitere..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

86
web_m2x_options/i18n/es.po

@ -0,0 +1,86 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr "Crear"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, 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:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, 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:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, 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:54
#, 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?"

85
web_m2x_options/i18n/fi.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Hae lisää..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/fr.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Rechercher plus..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

78
web_m2x_options/i18n/hr.po

@ -0,0 +1,78 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hr\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/js/form.js:49
#, python-format
msgid "Cancel"
msgstr "Otkaži"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:379
#, python-format
msgid "Create \"<strong>%s</strong>\""
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:398
#, python-format
msgid "Create and Edit..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:355
#, python-format
msgid "Search More..."
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/it.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Cerca altro..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/pt_BR.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Buscar mais..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/sl.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, 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:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

85
web_m2x_options/i18n/tr.po

@ -0,0 +1,85 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_m2x_options
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-09 17:53+0000\n"
"PO-Revision-Date: 2017-03-09 17:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/xml/base.xml:8
#, python-format
msgid "!(widget.options.no_open || widget.options.no_open_edit)"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:49
#, python-format
msgid "Cancel"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:35
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:225
#: code:addons/web_m2x_options/static/src/js/form.js:375
#, 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:32
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:243
#: code:addons/web_m2x_options/static/src/js/form.js:394
#, 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:45
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:194
#: code:addons/web_m2x_options/static/src/js/form.js:351
#, python-format
msgid "Search More..."
msgstr "Daha Fazla..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

257
web_m2x_options/static/src/js/form.js

@ -1,12 +1,15 @@
/*global openerp, _, $ */
openerp.web_m2x_options = function (instance) {
/* Copyright 2016 0k.io,ACSONE SA/NV
* * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define('web_m2x_options.web_m2x_options', function (require) {
"use strict"; "use strict";
var QWeb = instance.web.qweb,
_t = instance.web._t,
_lt = instance.web._lt;
var core = require('web.core'),
data = require('web.data'),
Dialog = require('web.Dialog'),
Model = require('web.Model'),
form_relational = require('web.form_relational'),
_t = core._t;
var OPTIONS = ['web_m2x_options.create', var OPTIONS = ['web_m2x_options.create',
'web_m2x_options.create_edit', 'web_m2x_options.create_edit',
@ -14,7 +17,45 @@ openerp.web_m2x_options = function (instance) {
'web_m2x_options.search_more', 'web_m2x_options.search_more',
'web_m2x_options.m2o_dialog',]; 'web_m2x_options.m2o_dialog',];
instance.web.form.FieldMany2One = instance.web.form.FieldMany2One.extend({
// In odoo 9.c FielMany2One is not exposed by form_relational
// To bypass this limitation we use the widget registry to get the
// reference to the FielMany2One widget.
var FieldMany2One = core.form_widget_registry.get('many2one');
var M2ODialog = Dialog.extend({
template: "M2ODialog",
init: function(parent) {
this.name = parent.string;
this._super(parent, {
title: _.str.sprintf(_t("Create a %s"), parent.string),
size: 'medium',
buttons: [
{text: _t('Create'), classes: 'btn-primary', click: function() {
if (this.$("input").val() !== ''){
this.getParent()._quick_create(this.$("input").val());
this.close();
} else {
e.preventDefault();
this.$("input").focus();
}
}},
{text: _t('Create and edit'), classes: 'btn-primary', close: true, click: function() {
this.getParent()._search_create_popup("form", undefined, this.getParent()._create_context(this.$("input").val()));
}},
{text: _t('Cancel'), close: true}
]
});
},
start: function() {
var text = _.str.sprintf(_t("You are creating a new %s, are you sure it does not exist yet?"), this.name);
this.$("p").text(text);
this.$("input").val(this.getParent().$input.val());
},
});
FieldMany2One.include({
start: function() { start: function() {
this._super.apply(this, arguments); this._super.apply(this, arguments);
@ -26,7 +67,7 @@ openerp.web_m2x_options = function (instance) {
if (!_.isUndefined(this.view) && _.isUndefined(this.view.ir_options_loaded)) { if (!_.isUndefined(this.view) && _.isUndefined(this.view.ir_options_loaded)) {
this.view.ir_options_loaded = $.Deferred(); this.view.ir_options_loaded = $.Deferred();
this.view.ir_options = {}; this.view.ir_options = {};
(new instance.web.Model("ir.config_parameter"))
(new Model("ir.config_parameter"))
.query(["key", "value"]).filter([['key', 'in', OPTIONS]]) .query(["key", "value"]).filter([['key', 'in', OPTIONS]])
.all().then(function(records) { .all().then(function(records) {
_(records).each(function(record) { _(records).each(function(record) {
@ -57,51 +98,45 @@ openerp.web_m2x_options = function (instance) {
if(this.is_option_set(this.options.m2o_dialog) || if(this.is_option_set(this.options.m2o_dialog) ||
_.isUndefined(this.options.m2o_dialog) && this.is_option_set(this.view.ir_options['web_m2x_options.m2o_dialog']) || _.isUndefined(this.options.m2o_dialog) && this.is_option_set(this.view.ir_options['web_m2x_options.m2o_dialog']) ||
this.can_create && _.isUndefined(this.options.m2o_dialog) && _.isUndefined(this.view.ir_options['web_m2x_options.m2o_dialog'])) { this.can_create && _.isUndefined(this.options.m2o_dialog) && _.isUndefined(this.view.ir_options['web_m2x_options.m2o_dialog'])) {
new instance.web.form.M2ODialog(this).open();
new M2ODialog(this).open();
} }
}, },
get_search_result: function (search_val) { get_search_result: function (search_val) {
var Objects = new instance.web.Model(this.field.relation);
var Objects = new Model(this.field.relation);
var def = $.Deferred(); var def = $.Deferred();
var self = this; var self = this;
// add options limit used to change number of selections record // add options limit used to change number of selections record
// returned. // returned.
if (_.isUndefined(this.view))
return this._super.apply(this, arguments);
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
}
if (_.isUndefined(this.view))
return this._super.apply(this, arguments);
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
}
if (typeof this.options.limit === 'number') { if (typeof this.options.limit === 'number') {
this.limit = this.options.limit; this.limit = this.options.limit;
} }
// add options search_more to force enable or disable search_more button
if (this.is_option_set(this.options.search_more) || _.isUndefined(this.options.search_more) && this.is_option_set(self.view.ir_options['web_m2x_options.search_more'])) {
this.search_more = true
}
// add options field_color and colors to color item(s) depending on field_color value // add options field_color and colors to color item(s) depending on field_color value
this.field_color = this.options.field_color this.field_color = this.options.field_color
this.colors = this.options.colors this.colors = this.options.colors
var dataset = new instance.web.DataSet(this, this.field.relation,
var dataset = new data.DataSet(this, this.field.relation,
self.build_context()); self.build_context());
var blacklist = this.get_search_blacklist(); var blacklist = this.get_search_blacklist();
this.last_query = search_val; this.last_query = search_val;
var search_result = this.orderer.add(dataset.name_search( var search_result = this.orderer.add(dataset.name_search(
search_val, search_val,
new instance.web.CompoundDomain(
new data.CompoundDomain(
self.build_domain(), [["id", "not in", blacklist]]), self.build_domain(), [["id", "not in", blacklist]]),
'ilike', this.limit + 1, 'ilike', this.limit + 1,
self.build_context())); self.build_context()));
var create_rights; var create_rights;
if (typeof this.options.create === "undefined" ||
typeof this.options.create_edit === "undefined") {
create_rights = new instance.web.Model(this.field.relation).call(
if (!(self.options && (self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit)))) {
create_rights = new Model(this.field.relation).call(
"check_access_rights", ["create", false]); "check_access_rights", ["create", false]);
} }
@ -121,13 +156,11 @@ openerp.web_m2x_options = function (instance) {
}); });
// Search result value colors // Search result value colors
if (self.colors && self.field_color) { if (self.colors && self.field_color) {
var value_ids = []; var value_ids = [];
for (var index in values) { for (var index in values) {
value_ids.push(values[index].id); value_ids.push(values[index].id);
} }
// RPC request to get field_color from Objects // RPC request to get field_color from Objects
Objects.query([self.field_color]) Objects.query([self.field_color])
.filter([['id', 'in', value_ids]]) .filter([['id', 'in', value_ids]])
@ -137,7 +170,6 @@ openerp.web_m2x_options = function (instance) {
if (values[index_value].id == objects[index].id) { if (values[index_value].id == objects[index].id) {
// Find value in values by comparing ids // Find value in values by comparing ids
var value = values[index_value]; var value = values[index_value];
// Find color with field value as key // Find color with field value as key
var color = self.colors[objects[index][self.field_color]] || 'black'; var color = self.colors[objects[index][self.field_color]] || 'black';
value.label = '<span style="color:'+color+'">'+value.label+'</span>'; value.label = '<span style="color:'+color+'">'+value.label+'</span>';
@ -150,19 +182,25 @@ openerp.web_m2x_options = function (instance) {
} }
// search more... if more results that max // search more... if more results that max
var can_search_more = (self.options && self.is_option_set(self.options.search_more)),
search_more_undef = _.isUndefined(self.options.search_more) && _.isUndefined(self.view.ir_options['web_m2x_options.search_more']),
search_more = self.is_option_set(self.view.ir_options['web_m2x_options.search_more']);
if (values.length > self.limit || self.search_more) {
if (values.length > self.limit && (can_search_more || search_more_undef || search_more)) {
values = values.slice(0, self.limit); values = values.slice(0, self.limit);
values.push({ values.push({
label: _t("Search More..."), label: _t("Search More..."),
action: function () { action: function () {
// limit = 160 for improving performance, similar
// to Odoo implementation here:
// https://github.com/odoo/odoo/blob/feeac2a4f1cd777770dd2b42534904ac71f23e46/addons/web/static/src/js/views/form_common.js#L213
dataset.name_search( dataset.name_search(
search_val, self.build_domain(), search_val, self.build_domain(),
'ilike', false).done(function (data) {
'ilike', 160).done(function (data) {
self._search_create_popup("search", data); self._search_create_popup("search", data);
}); });
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
@ -171,11 +209,12 @@ openerp.web_m2x_options = function (instance) {
var raw_result = _(data.result).map(function (x) { var raw_result = _(data.result).map(function (x) {
return x[1]; return x[1];
}); });
if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create']) && can_create) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == "True") ||
self.options.create) {
var quick_create = self.is_option_set(self.options.create) || self.is_option_set(self.options.quick_create),
quick_create_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.quick_create),
m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']),
m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']);
var show_create = (!self.options && (m2x_create_undef || m2x_create)) || (self.options && (quick_create || (quick_create_undef && (m2x_create_undef || m2x_create))));
if (show_create){
if (search_val.length > 0 && if (search_val.length > 0 &&
!_.include(raw_result, search_val)) { !_.include(raw_result, search_val)) {
@ -186,17 +225,18 @@ openerp.web_m2x_options = function (instance) {
action: function () { action: function () {
self._quick_create(search_val); self._quick_create(search_val);
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
} }
// create... // create...
if ((_.isUndefined(self.options.create_edit) && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']) && can_create) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == "True") ||
self.options.create_edit) {
var create_edit = self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit),
create_edit_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.create_edit),
m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']),
m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']);
var show_create_edit = (!self.options && (m2x_create_edit_undef || m2x_create_edit)) || (self.options && (create_edit || (create_edit_undef && (m2x_create_edit_undef || m2x_create_edit))));
if (show_create_edit){
values.push({ values.push({
label: _t("Create and Edit..."), label: _t("Create and Edit..."),
action: function () { action: function () {
@ -204,10 +244,9 @@ openerp.web_m2x_options = function (instance) {
"form", undefined, "form", undefined,
self._create_context(search_val)); self._create_context(search_val));
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
// Check if colors specified to wait for RPC // Check if colors specified to wait for RPC
if (!(self.field_color && self.colors)){ if (!(self.field_color && self.colors)){
def.resolve(values); def.resolve(values);
@ -218,36 +257,53 @@ openerp.web_m2x_options = function (instance) {
} }
}); });
instance.web.form.FieldMany2ManyTags.include({
form_relational.FieldMany2ManyTags.include({
init: function () {
this.events["click .badge"] = "open_badge";
return this._super.apply(this, arguments);
},
show_error_displayer: function () { show_error_displayer: function () {
if ((typeof this.options.m2o_dialog === 'undefined' && this.can_create) || if ((typeof this.options.m2o_dialog === 'undefined' && this.can_create) ||
this.options.m2o_dialog) { this.options.m2o_dialog) {
new instance.web.form.M2ODialog(this).open();
new M2ODialog(this).open();
} }
}, },
start: function() {
this._super.apply(this, arguments);
return this.get_options();
},
get_options: function() {
var self = this;
if (_.isUndefined(this.view.ir_options_loaded)) {
this.view.ir_options_loaded = $.Deferred();
this.view.ir_options = {};
(new instance.web.Model("ir.config_parameter"))
.query(["key", "value"]).filter([['key', 'in', OPTIONS]])
.all().then(function(records) {
_(records).each(function(record) {
self.view.ir_options[record.key] = record.value;
});
self.view.ir_options_loaded.resolve();
});
}
return this.view.ir_options_loaded;
},
start: function() {
this._super.apply(this, arguments);
return this.get_options();
},
get_options: function() {
var self = this;
if (_.isUndefined(this.view.ir_options_loaded)) {
this.view.ir_options_loaded = $.Deferred();
this.view.ir_options = {};
(new Model("ir.config_parameter"))
.query(["key", "value"]).filter([['key', 'in', OPTIONS]])
.all().then(function(records) {
_(records).each(function(record) {
self.view.ir_options[record.key] = record.value;
});
self.view.ir_options_loaded.resolve();
});
}
return this.view.ir_options_loaded;
},
is_option_set: function(option) {
if (_.isUndefined(option)) {
return false
}
var is_string = typeof option === 'string'
var is_bool = typeof option === 'boolean'
if (is_string) {
return option === 'true' || option === 'True'
} else if (is_bool) {
return option
}
return false
},
/** /**
* Call this method to search using a string. * Call this method to search using a string.
@ -259,20 +315,20 @@ openerp.web_m2x_options = function (instance) {
// add options limit used to change number of selections record // add options limit used to change number of selections record
// returned. // returned.
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
}
if (!_.isUndefined(this.view.ir_options['web_m2x_options.limit'])) {
this.limit = parseInt(this.view.ir_options['web_m2x_options.limit']);
}
if (typeof this.options.limit === 'number') { if (typeof this.options.limit === 'number') {
this.limit = this.options.limit; this.limit = this.options.limit;
} }
var dataset = new instance.web.DataSet(this, this.field.relation, self.build_context());
var dataset = new data.DataSet(this, this.field.relation, self.build_context());
var blacklist = this.get_search_blacklist(); var blacklist = this.get_search_blacklist();
this.last_query = search_val; this.last_query = search_val;
return this.orderer.add(dataset.name_search( return this.orderer.add(dataset.name_search(
search_val, new instance.web.CompoundDomain(self.build_domain(), [["id", "not in", blacklist]]),
search_val, new data.CompoundDomain(self.build_domain(), [["id", "not in", blacklist]]),
'ilike', this.limit + 1, self.build_context())).then(function(data) { 'ilike', this.limit + 1, self.build_context())).then(function(data) {
self.last_search = data; self.last_search = data;
// possible selections for the m2o // possible selections for the m2o
@ -292,18 +348,24 @@ openerp.web_m2x_options = function (instance) {
values.push({ values.push({
label: _t("Search More..."), label: _t("Search More..."),
action: function() { action: function() {
dataset.name_search(search_val, self.build_domain(), 'ilike', false).done(function(data) {
// limit = 80 for improving performance, similar
// to Odoo implementation here:
// https://github.com/odoo/odoo/commit/8c3cdce539d87775b59b3f2d5ceb433f995821bf
dataset.name_search(search_val, self.build_domain(), 'ilike', 80).done(function(data) {
self._search_create_popup("search", data); self._search_create_popup("search", data);
}); });
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
// quick create // quick create
if ((_.isUndefined(self.options.create) && _.isUndefined(self.view.ir_options['web_m2x_options.create'])) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create'] == 'True') ||
self.options.create) {
var quick_create = self.is_option_set(self.options.create) || self.is_option_set(self.options.quick_create),
quick_create_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.quick_create),
m2x_create_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create']),
m2x_create = self.is_option_set(self.view.ir_options['web_m2x_options.create']);
var show_create = (!self.options && (m2x_create_undef || m2x_create)) || (self.options && (quick_create || (quick_create_undef && (m2x_create_undef || m2x_create))));
if (show_create){
var raw_result = _(data.result).map(function(x) {return x[1];}); var raw_result = _(data.result).map(function(x) {return x[1];});
if (search_val.length > 0 && !_.include(raw_result, search_val)) { if (search_val.length > 0 && !_.include(raw_result, search_val)) {
@ -313,29 +375,50 @@ openerp.web_m2x_options = function (instance) {
action: function() { action: function() {
self._quick_create(search_val); self._quick_create(search_val);
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
} }
// create... // create...
if ((_.isUndefined(self.options.create_edit === 'undefined') && _.isUndefined(self.view.ir_options['web_m2x_options.create_edit'])) ||
(_.isUndefined(self.options.create) && self.view.ir_options['web_m2x_options.create_edit'] == 'True') ||
self.options.create_edit) {
var create_edit = self.is_option_set(self.options.create) || self.is_option_set(self.options.create_edit),
create_edit_undef = _.isUndefined(self.options.create) && _.isUndefined(self.options.create_edit),
m2x_create_edit_undef = _.isUndefined(self.view.ir_options['web_m2x_options.create_edit']),
m2x_create_edit = self.is_option_set(self.view.ir_options['web_m2x_options.create_edit']);
var show_create_edit = (!self.options && (m2x_create_edit_undef || m2x_create_edit)) || (self.options && (create_edit || (create_edit_undef && (m2x_create_edit_undef || m2x_create_edit))));
if (show_create_edit){
values.push({ values.push({
label: _t("Create and Edit..."), label: _t("Create and Edit..."),
action: function() { action: function() {
self._search_create_popup("form", undefined, self._create_context(search_val)); self._search_create_popup("form", undefined, self._create_context(search_val));
}, },
classname: 'oe_m2o_dropdown_option'
classname: 'oe_m2o_dropdown_option o_m2o_dropdown_option'
}); });
} }
return values; return values;
}) })
}, },
});
};
open_badge: function(ev){
var self = this;
var open = (self.options && self.is_option_set(self.options.open));
if(open){
self.mutex.exec(function(){
var id = parseInt($(ev.currentTarget).data('id'));
self.do_action({
type: 'ir.actions.act_window',
res_model: self.field.relation,
views: [[false, 'form']],
res_id: id,
target: "new"
});
}.bind(this));
}else{
self.open_color_picker(ev);
}
},
});
});

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.options.no_open || widget.options.no_open_edit)
</attribute>
</t>
</t>
</templates>

17
web_m2x_options/views/view.xml

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