Browse Source

Merge branch '11.0' of https://github.com/OCA/web into 11.0-mig-web_domain_field

pull/1019/head
Martin Nicolas Cuesta 5 years ago
parent
commit
00908d278c
  1. 2
      setup/_metapackage/VERSION.txt
  2. 7
      setup/_metapackage/setup.py
  3. 1
      setup/web_advanced_search/odoo/addons/web_advanced_search
  4. 2
      setup/web_advanced_search/setup.cfg
  5. 6
      setup/web_advanced_search/setup.py
  6. 1
      setup/web_editor_background_color/odoo/addons/web_editor_background_color
  7. 2
      setup/web_editor_background_color/setup.cfg
  8. 6
      setup/web_editor_background_color/setup.py
  9. 1
      setup/web_export_view/odoo/addons/web_export_view
  10. 2
      setup/web_export_view/setup.cfg
  11. 6
      setup/web_export_view/setup.py
  12. 1
      setup/web_send_message_popup/odoo/addons/web_send_message_popup
  13. 2
      setup/web_send_message_popup/setup.cfg
  14. 6
      setup/web_send_message_popup/setup.py
  15. 1
      setup/web_tree_image/odoo/addons/web_tree_image
  16. 2
      setup/web_tree_image/setup.cfg
  17. 6
      setup/web_tree_image/setup.py
  18. 1
      setup/web_tree_resize_column/odoo/addons/web_tree_resize_column
  19. 2
      setup/web_tree_resize_column/setup.cfg
  20. 6
      setup/web_tree_resize_column/setup.py
  21. 1
      setup/web_widget_url_advanced/odoo/addons/web_widget_url_advanced
  22. 2
      setup/web_widget_url_advanced/setup.cfg
  23. 6
      setup/web_widget_url_advanced/setup.py
  24. 166
      web_advanced_search/README.rst
  25. 0
      web_advanced_search/__init__.py
  26. 27
      web_advanced_search/__manifest__.py
  27. 24
      web_advanced_search/i18n/da.po
  28. 29
      web_advanced_search/i18n/de.po
  29. 29
      web_advanced_search/i18n/es.po
  30. 29
      web_advanced_search/i18n/fr.po
  31. 30
      web_advanced_search/i18n/hr.po
  32. 29
      web_advanced_search/i18n/nl.po
  33. 30
      web_advanced_search/i18n/nl_NL.po
  34. 31
      web_advanced_search/i18n/pt_BR.po
  35. 22
      web_advanced_search/i18n/web_advanced_search.pot
  36. 6
      web_advanced_search/readme/CONTRIBUTORS.rst
  37. 1
      web_advanced_search/readme/DESCRIPTION.rst
  38. 40
      web_advanced_search/readme/HISTORY.rst
  39. 14
      web_advanced_search/readme/ROADMAP.rst
  40. 21
      web_advanced_search/readme/USAGE.rst
  41. BIN
      web_advanced_search/static/description/icon.png
  42. 516
      web_advanced_search/static/description/index.html
  43. 13
      web_advanced_search/static/src/css/web_advanced_search.less
  44. 86
      web_advanced_search/static/src/js/human_domain.js
  45. 348
      web_advanced_search/static/src/js/web_advanced_search.js
  46. 13
      web_advanced_search/static/src/xml/web_advanced_search.xml
  47. 14
      web_advanced_search/views/templates.xml
  48. 2
      web_decimal_numpad_dot/__manifest__.py
  49. 28
      web_decimal_numpad_dot/static/src/js/numpad_dot.js
  50. 4
      web_dialog_size/static/src/js/web_dialog_size.js
  51. 98
      web_editor_background_color/README.rst
  52. 0
      web_editor_background_color/__init__.py
  53. 22
      web_editor_background_color/__manifest__.py
  54. 22
      web_editor_background_color/i18n/ca.po
  55. 21
      web_editor_background_color/i18n/es.po
  56. 23
      web_editor_background_color/i18n/fr.po
  57. 24
      web_editor_background_color/i18n/sl.po
  58. 14
      web_editor_background_color/i18n/web_editor_background_color.pot
  59. 1
      web_editor_background_color/readme/CONTRIBUTORS.rst
  60. 3
      web_editor_background_color/readme/CREDITS.rst
  61. 5
      web_editor_background_color/readme/DESCRIPTION.rst
  62. 10
      web_editor_background_color/readme/USAGE.rst
  63. BIN
      web_editor_background_color/static/description/icon.png
  64. 445
      web_editor_background_color/static/description/index.html
  65. 21
      web_editor_background_color/static/src/css/background_color.less
  66. 103
      web_editor_background_color/static/src/js/background_color.js
  67. 230
      web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.css
  68. 1327
      web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.js
  69. 18
      web_editor_background_color/static/src/xml/colorpicker.xml
  70. 18
      web_editor_background_color/templates/assets.xml
  71. 81
      web_export_view/README.rst
  72. 3
      web_export_view/__init__.py
  73. 30
      web_export_view/__manifest__.py
  74. 1
      web_export_view/controllers/__init__.py
  75. 34
      web_export_view/controllers/controllers.py
  76. 41
      web_export_view/i18n/da.po
  77. 45
      web_export_view/i18n/de.po
  78. 45
      web_export_view/i18n/es.po
  79. 46
      web_export_view/i18n/hr.po
  80. 46
      web_export_view/i18n/nl_NL.po
  81. 47
      web_export_view/i18n/pt_BR.po
  82. 41
      web_export_view/i18n/web_export_view.pot
  83. 46
      web_export_view/i18n/zh_CN.po
  84. 9
      web_export_view/security/groups.xml
  85. BIN
      web_export_view/static/description/icon.png
  86. 118
      web_export_view/static/src/js/web_export_view.js
  87. 11
      web_export_view/static/src/xml/web_export_view_template.xml
  88. 9
      web_export_view/views/web_export_view_view.xml
  89. 62
      web_favicon/i18n/ca.po
  90. 62
      web_favicon/i18n/da.po
  91. 11
      web_favicon/i18n/es.po
  92. 2
      web_listview_range_select/__manifest__.py
  93. 10
      web_listview_range_select/static/src/js/web_listview_range_select.js
  94. 20
      web_m2x_options/i18n/ar.po
  95. 20
      web_m2x_options/i18n/de.po
  96. 20
      web_m2x_options/i18n/es.po
  97. 20
      web_m2x_options/i18n/fi.po
  98. 20
      web_m2x_options/i18n/fr.po
  99. 20
      web_m2x_options/i18n/hr.po
  100. 20
      web_m2x_options/i18n/it.po

2
setup/_metapackage/VERSION.txt

@ -1 +1 @@
11.0.20180721.0
11.0.20190214.0

7
setup/_metapackage/setup.py

@ -9,10 +9,13 @@ setuptools.setup(
version=version,
install_requires=[
'odoo11-addon-web_action_conditionable',
'odoo11-addon-web_advanced_search',
'odoo11-addon-web_decimal_numpad_dot',
'odoo11-addon-web_dialog_size',
'odoo11-addon-web_disable_export_group',
'odoo11-addon-web_editor_background_color',
'odoo11-addon-web_environment_ribbon',
'odoo11-addon-web_export_view',
'odoo11-addon-web_favicon',
'odoo11-addon-web_group_expand',
'odoo11-addon-web_ir_actions_act_multi',
@ -24,16 +27,20 @@ setuptools.setup(
'odoo11-addon-web_responsive',
'odoo11-addon-web_search_with_and',
'odoo11-addon-web_searchbar_full_width',
'odoo11-addon-web_send_message_popup',
'odoo11-addon-web_sheet_full_width',
'odoo11-addon-web_timeline',
'odoo11-addon-web_tree_dynamic_colored_field',
'odoo11-addon-web_tree_image',
'odoo11-addon-web_tree_many2one_clickable',
'odoo11-addon-web_tree_resize_column',
'odoo11-addon-web_widget_bokeh_chart',
'odoo11-addon-web_widget_color',
'odoo11-addon-web_widget_datepicker_options',
'odoo11-addon-web_widget_image_download',
'odoo11-addon-web_widget_image_url',
'odoo11-addon-web_widget_many2many_tags_multi_selection',
'odoo11-addon-web_widget_url_advanced',
'odoo11-addon-web_widget_x2many_2d_matrix',
'odoo11-addon-web_widget_x2many_2d_matrix_example',
],

1
setup/web_advanced_search/odoo/addons/web_advanced_search

@ -0,0 +1 @@
../../../../web_advanced_search

2
setup/web_advanced_search/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_advanced_search/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_editor_background_color/odoo/addons/web_editor_background_color

@ -0,0 +1 @@
../../../../web_editor_background_color

2
setup/web_editor_background_color/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_editor_background_color/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_export_view/odoo/addons/web_export_view

@ -0,0 +1 @@
../../../../web_export_view

2
setup/web_export_view/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_export_view/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_send_message_popup/odoo/addons/web_send_message_popup

@ -0,0 +1 @@
../../../../web_send_message_popup

2
setup/web_send_message_popup/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_send_message_popup/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_tree_image/odoo/addons/web_tree_image

@ -0,0 +1 @@
../../../../web_tree_image

2
setup/web_tree_image/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_tree_image/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_tree_resize_column/odoo/addons/web_tree_resize_column

@ -0,0 +1 @@
../../../../web_tree_resize_column

2
setup/web_tree_resize_column/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_tree_resize_column/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

1
setup/web_widget_url_advanced/odoo/addons/web_widget_url_advanced

@ -0,0 +1 @@
../../../../web_widget_url_advanced

2
setup/web_widget_url_advanced/setup.cfg

@ -0,0 +1,2 @@
[bdist_wheel]
universal=1

6
setup/web_widget_url_advanced/setup.py

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)

166
web_advanced_search/README.rst

@ -0,0 +1,166 @@
===============
Advanced search
===============
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 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/11.0/web_advanced_search
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_advanced_search
: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/11.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
More powerful and easy to use search, especially for related fields.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
* Open *Filters* in a search view
* Select any relational field
* Select operator `is equal to` or `is not equal to`
* The text field changes to a relational selection field where you
can search for the record in question
* Click *Apply*
To search for properties of linked records (ie invoices for customers
with a credit limit higher than X):
* Open *Filters* in a search view
* Select *Add Advanced Filter*
* Edit the advanced filter
* Click *Save*
Note that you can stack searching for properties: Simply add another
advanced search in the selection search window. You can do
this indefinetely, so it is possible to search for moves belonging
to a journal which has a user who is member of a certain group etc.
Known issues / Roadmap
======================
Improvements to the ``domain`` widget, not exclusively related to this addon:
* Use relational widgets when filtering a relational field
* Allow to filter field names
Improvements to the search view in this addon:
* Use widgets ``one2many_tags`` when searching ``one2many`` fields
* Use widgets ``many2many_tags`` when searching ``many2many`` fields
* Allow to edit current full search using the advanced domain editor
* Allow to edit individually any facet from current search using the
advanced domain editor
* Beautiful, human-readable, domain representation when adding an
advanced filter
Changelog
=========
11.0.1.0.2 (2018-10-31)
~~~~~~~~~~~~~~~~~~~~~~~
* Fix initialization of 1st domain node
Sometime the dialog is not ready yet, like on EE version.
Hence when you inject the 1st domain node
the dialog must be already opened.
[simahawk]
11.0.1.0.1 (2018-09-18)
~~~~~~~~~~~~~~~~~~~~~~~
* Fix `undefined` in x2m fields
Before this patch, when searching with the "equals to" operator in any
x2many field, the searched parameter was always `undefined`.
The problem was that the underlying field manager implementation was
treating those fields as x2many, while the widget used was the `one2many`
one.
This patch simply mocks the underlying fake record to make think that
any relational field is always a `one2many`. This sets all pieces in
place and makes the field manager work as expected, and thus you can
search as expected too.
* Make linter happy
[Yajo]
11.0.1.0.0 (2018-07-20)
~~~~~~~~~~~~~~~~~~~~~~~
* Rename, refactor, migrate to v11
[Yajo]
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_advanced_search%0Aversion:%2011.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
~~~~~~~
* Therp BV
* Tecnativa
Contributors
~~~~~~~~~~~~
* Holger Brunn <hbrunn@therp.nl>
* Vicent Cubells <vicent.cubells@tecnativa.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Rami Alwafaie <rami.alwafaie@initos.com>
* Jose Mª Bernet <josemaria.bernet@guadaltech.es>
* Simone Orsi <simone.orsi@camptocamp.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/11.0/web_advanced_search>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

0
web_advanced_search/__init__.py

27
web_advanced_search/__manifest__.py

@ -0,0 +1,27 @@
# Copyright 2015 Therp BV <http://therp.nl>
# Copyright 2017 Tecnativa - Vicent Cubells
# Copyright 2018 Tecnativa - Jairo Llopis
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Advanced search",
"version": "11.0.1.0.2",
"author": "Therp BV, "
"Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Usability",
"summary": "Easier and more powerful searching tools",
"website": "https://github.com/OCA/web",
"depends": [
'web',
],
"data": [
'views/templates.xml',
],
"qweb": [
'static/src/xml/web_advanced_search.xml',
],
"installable": True,
"application": False,
}

24
web_advanced_search/i18n/da.po

@ -0,0 +1,24 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2018-09-01 05:03+0000\n"
"Last-Translator: Hans Henrik Gabelgaard <hhg@gabelgaard.org>\n"
"Language-Team: none\n"
"Language: da\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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr "Tilføj avanceret filter"

29
web_advanced_search/i18n/de.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# Translators:
# 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:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "Ist in Auswahl"

29
web_advanced_search/i18n/es.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# 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:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "está en la selección"

29
web_advanced_search/i18n/fr.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# 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:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "parmi la sélection"

30
web_advanced_search/i18n/hr.po

@ -0,0 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-03 03:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "je u odabiru"

29
web_advanced_search/i18n/nl.po

@ -0,0 +1,29 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# 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:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
"Language: 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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "is in selectie"

30
web_advanced_search/i18n/nl_NL.po

@ -0,0 +1,30 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# 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: 2018-01-03 03:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "Is in selectie"

31
web_advanced_search/i18n/pt_BR.po

@ -0,0 +1,31 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search_x2x
#
# Translators:
# 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:49+0000\n"
"PO-Revision-Date: 2018-01-03 03:49+0000\n"
"Last-Translator: Rodrigo de Almeida Sottomaior Macedo "
"<rmsolucoeseminformatic4@gmail.com>, 2017\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"
#. module: web_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""
#~ msgid "is in selection"
#~ msgstr "Está em seleção"

22
web_advanced_search/i18n/web_advanced_search.pot

@ -0,0 +1,22 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_advanced_search
#
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_advanced_search
#. openerp-web
#: code:addons/web_advanced_search/static/src/xml/web_advanced_search.xml:9
#, python-format
msgid "Add Advanced Filter"
msgstr ""

6
web_advanced_search/readme/CONTRIBUTORS.rst

@ -0,0 +1,6 @@
* Holger Brunn <hbrunn@therp.nl>
* Vicent Cubells <vicent.cubells@tecnativa.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Rami Alwafaie <rami.alwafaie@initos.com>
* Jose Mª Bernet <josemaria.bernet@guadaltech.es>
* Simone Orsi <simone.orsi@camptocamp.com>

1
web_advanced_search/readme/DESCRIPTION.rst

@ -0,0 +1 @@
More powerful and easy to use search, especially for related fields.

40
web_advanced_search/readme/HISTORY.rst

@ -0,0 +1,40 @@
11.0.1.0.2 (2018-10-31)
~~~~~~~~~~~~~~~~~~~~~~~
* Fix initialization of 1st domain node
Sometime the dialog is not ready yet, like on EE version.
Hence when you inject the 1st domain node
the dialog must be already opened.
[simahawk]
11.0.1.0.1 (2018-09-18)
~~~~~~~~~~~~~~~~~~~~~~~
* Fix `undefined` in x2m fields
Before this patch, when searching with the "equals to" operator in any
x2many field, the searched parameter was always `undefined`.
The problem was that the underlying field manager implementation was
treating those fields as x2many, while the widget used was the `one2many`
one.
This patch simply mocks the underlying fake record to make think that
any relational field is always a `one2many`. This sets all pieces in
place and makes the field manager work as expected, and thus you can
search as expected too.
* Make linter happy
[Yajo]
11.0.1.0.0 (2018-07-20)
~~~~~~~~~~~~~~~~~~~~~~~
* Rename, refactor, migrate to v11
[Yajo]

14
web_advanced_search/readme/ROADMAP.rst

@ -0,0 +1,14 @@
Improvements to the ``domain`` widget, not exclusively related to this addon:
* Use relational widgets when filtering a relational field
* Allow to filter field names
Improvements to the search view in this addon:
* Use widgets ``one2many_tags`` when searching ``one2many`` fields
* Use widgets ``many2many_tags`` when searching ``many2many`` fields
* Allow to edit current full search using the advanced domain editor
* Allow to edit individually any facet from current search using the
advanced domain editor
* Beautiful, human-readable, domain representation when adding an
advanced filter

21
web_advanced_search/readme/USAGE.rst

@ -0,0 +1,21 @@
To use this module, you need to:
* Open *Filters* in a search view
* Select any relational field
* Select operator `is equal to` or `is not equal to`
* The text field changes to a relational selection field where you
can search for the record in question
* Click *Apply*
To search for properties of linked records (ie invoices for customers
with a credit limit higher than X):
* Open *Filters* in a search view
* Select *Add Advanced Filter*
* Edit the advanced filter
* Click *Save*
Note that you can stack searching for properties: Simply add another
advanced search in the selection search window. You can do
this indefinetely, so it is possible to search for moves belonging
to a journal which has a user who is member of a certain group etc.

BIN
web_advanced_search/static/description/icon.png

After

Width: 100  |  Height: 100  |  Size: 2.0 KiB

516
web_advanced_search/static/description/index.html

@ -0,0 +1,516 @@
<?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.14: http://docutils.sourceforge.net/" />
<title>Advanced search</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z 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 }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
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, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.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;
}
table.align-center {
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 } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
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="advanced-search">
<h1 class="title">Advanced search</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/web/tree/11.0/web_advanced_search"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_advanced_search"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/162/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>More powerful and easy to use search, especially for related fields.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id4">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="id5">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#changelog" id="id6">Changelog</a><ul>
<li><a class="reference internal" href="#id1" id="id7">11.0.1.0.2 (2018-10-31)</a></li>
<li><a class="reference internal" href="#id2" id="id8">11.0.1.0.1 (2018-09-18)</a></li>
<li><a class="reference internal" href="#id3" id="id9">11.0.1.0.0 (2018-07-20)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="id10">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id11">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id12">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id13">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id14">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id4">Usage</a></h1>
<p>To use this module, you need to:</p>
<ul class="simple">
<li>Open <em>Filters</em> in a search view</li>
<li>Select any relational field</li>
<li>Select operator <cite>is equal to</cite> or <cite>is not equal to</cite></li>
<li>The text field changes to a relational selection field where you
can search for the record in question</li>
<li>Click <em>Apply</em></li>
</ul>
<p>To search for properties of linked records (ie invoices for customers
with a credit limit higher than X):</p>
<ul class="simple">
<li>Open <em>Filters</em> in a search view</li>
<li>Select <em>Add Advanced Filter</em></li>
<li>Edit the advanced filter</li>
<li>Click <em>Save</em></li>
</ul>
<p>Note that you can stack searching for properties: Simply add another
advanced search in the selection search window. You can do
this indefinetely, so it is possible to search for moves belonging
to a journal which has a user who is member of a certain group etc.</p>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id5">Known issues / Roadmap</a></h1>
<p>Improvements to the <tt class="docutils literal">domain</tt> widget, not exclusively related to this addon:</p>
<ul class="simple">
<li>Use relational widgets when filtering a relational field</li>
<li>Allow to filter field names</li>
</ul>
<p>Improvements to the search view in this addon:</p>
<ul class="simple">
<li>Use widgets <tt class="docutils literal">one2many_tags</tt> when searching <tt class="docutils literal">one2many</tt> fields</li>
<li>Use widgets <tt class="docutils literal">many2many_tags</tt> when searching <tt class="docutils literal">many2many</tt> fields</li>
<li>Allow to edit current full search using the advanced domain editor</li>
<li>Allow to edit individually any facet from current search using the
advanced domain editor</li>
<li>Beautiful, human-readable, domain representation when adding an
advanced filter</li>
</ul>
</div>
<div class="section" id="changelog">
<h1><a class="toc-backref" href="#id6">Changelog</a></h1>
<div class="section" id="id1">
<h2><a class="toc-backref" href="#id7">11.0.1.0.2 (2018-10-31)</a></h2>
<ul>
<li><p class="first">Fix initialization of 1st domain node</p>
<p>Sometime the dialog is not ready yet, like on EE version.
Hence when you inject the 1st domain node
the dialog must be already opened.</p>
<p>[simahawk]</p>
</li>
</ul>
</div>
<div class="section" id="id2">
<h2><a class="toc-backref" href="#id8">11.0.1.0.1 (2018-09-18)</a></h2>
<ul>
<li><p class="first">Fix <cite>undefined</cite> in x2m fields</p>
<p>Before this patch, when searching with the “equals to” operator in any
x2many field, the searched parameter was always <cite>undefined</cite>.</p>
<p>The problem was that the underlying field manager implementation was
treating those fields as x2many, while the widget used was the <cite>one2many</cite>
one.</p>
<p>This patch simply mocks the underlying fake record to make think that
any relational field is always a <cite>one2many</cite>. This sets all pieces in
place and makes the field manager work as expected, and thus you can
search as expected too.</p>
</li>
<li><p class="first">Make linter happy</p>
<p>[Yajo]</p>
</li>
</ul>
</div>
<div class="section" id="id3">
<h2><a class="toc-backref" href="#id9">11.0.1.0.0 (2018-07-20)</a></h2>
<ul>
<li><p class="first">Rename, refactor, migrate to v11</p>
<p>[Yajo]</p>
</li>
</ul>
</div>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id10">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_advanced_search%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id11">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id12">Authors</a></h2>
<ul class="simple">
<li>Therp BV</li>
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id13">Contributors</a></h2>
<ul class="simple">
<li>Holger Brunn &lt;<a class="reference external" href="mailto:hbrunn&#64;therp.nl">hbrunn&#64;therp.nl</a>&gt;</li>
<li>Vicent Cubells &lt;<a class="reference external" href="mailto:vicent.cubells&#64;tecnativa.com">vicent.cubells&#64;tecnativa.com</a>&gt;</li>
<li>Jairo Llopis &lt;<a class="reference external" href="mailto:jairo.llopis&#64;tecnativa.com">jairo.llopis&#64;tecnativa.com</a>&gt;</li>
<li>Rami Alwafaie &lt;<a class="reference external" href="mailto:rami.alwafaie&#64;initos.com">rami.alwafaie&#64;initos.com</a>&gt;</li>
<li>Jose Mª Bernet &lt;<a class="reference external" href="mailto:josemaria.bernet&#64;guadaltech.es">josemaria.bernet&#64;guadaltech.es</a>&gt;</li>
<li>Simone Orsi &lt;<a class="reference external" href="mailto:simone.orsi&#64;camptocamp.com">simone.orsi&#64;camptocamp.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id14">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/11.0/web_advanced_search">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

13
web_advanced_search/static/src/css/web_advanced_search.less

@ -0,0 +1,13 @@
.o_search_options {
.o_filters_menu {
.o_filter_condition {
max-width: inherit;
.o_searchview_extended_prop_value {
.o_field_domain {
min-width: 30vw;
}
}
}
}
}

86
web_advanced_search/static/src/js/human_domain.js

@ -0,0 +1,86 @@
/* Copyright 2018 Tecnativa - Jairo Llopis
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define("web_advanced_search.human_domain", function (require) {
"use strict";
var DomainSelector = require("web.DomainSelector");
var join_mapping = {
"&": _(" and "),
"|": _(" or "),
"!": _(" is not "),
};
// HACK I should extend classes, but they are not exposed
// TODO Remove file when merged https://github.com/odoo/odoo/pull/25922
var human_domain_methods = {
DomainTree: function () {
var human_domains = [];
_.each(this.children, function (child) {
human_domains.push(
human_domain_methods[child.template].apply(child)
);
});
return _.str.sprintf(
"(%s)",
human_domains.join(join_mapping[this.operator])
);
},
DomainSelector: function () {
var result = human_domain_methods.DomainTree.apply(this, arguments);
// Remove surrounding parenthesis
return result.slice(1, -1);
},
DomainLeaf: function () {
var chain = [],
operator = this.operator_mapping[this.operator],
value = _.str.sprintf('"%s"', this.value);
// Humanize chain
this.chain.split(".").forEach(function (element, index) {
chain.push(
_.findWhere(
this.fieldSelector.pages[index],
{name: element}
).string || element
);
}, this);
// Special beautiness for some values
if (this.operator === "=" && _.isBoolean(this.value)) {
operator = this.operator_mapping[this.value ? "set" : "not set"];
value = "";
} else if (_.isArray(this.value)) {
value = _.str.sprintf('["%s"]', this.value.join('", "'));
}
return _.str.sprintf(
"%s %s %s",
chain.join("→"),
operator || this.operator,
value
).trim();
},
};
function getHumanDomain (parent, model, domain, options) {
var domain_selector = new DomainSelector(
parent,
model,
domain,
options
);
var dummy_parent = $("<div>");
domain_selector.appendTo(dummy_parent);
var result = human_domain_methods.DomainSelector.apply(
domain_selector
);
domain_selector.destroy();
dummy_parent.destroy();
return result;
}
return {
getHumanDomain: getHumanDomain,
};
});

348
web_advanced_search/static/src/js/web_advanced_search.js

@ -0,0 +1,348 @@
/* Copyright 2015 Therp BV <http://therp.nl>
* Copyright 2017-2018 Jairo Llopis <jairo.llopis@tecnativa.com>
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
odoo.define("web_advanced_search", function (require) {
"use strict";
var core = require("web.core");
var Domain = require("web.Domain");
var DomainSelectorDialog = require("web.DomainSelectorDialog");
var field_registry = require("web.field_registry");
var FieldManagerMixin = require("web.FieldManagerMixin");
var FilterMenu = require("web.FilterMenu");
var human_domain = require("web_advanced_search.human_domain");
var SearchView = require("web.SearchView");
var Widget = require("web.Widget");
var Char = core.search_filters_registry.get("char");
SearchView.include({
custom_events: _.extend({}, SearchView.prototype.custom_events, {
"get_dataset": "_on_get_dataset",
}),
/**
* Add or update a `dataset` attribute in event target
*
* The search view dataset includes things such as the model, which
* is required to make some parts of search views smarter.
*
* @param {OdooEvent} event The target will get the dataset.
*/
_on_get_dataset: function (event) {
event.target.dataset = this.dataset;
event.stopPropagation();
},
});
/**
* An almost dummy search proposition, to use with domain widget
*/
var AdvancedSearchProposition = Widget.extend({
/**
* @override
*/
init: function (parent, model, domain) {
this._super(parent);
this.model = model;
this.domain = new Domain(domain);
},
/**
* Produce a filter descriptor for advanced searches.
*
* @returns {Object} In the format expected by `web.FilterMenu`.
*/
get_filter: function () {
var domain_array = this.domain.toArray();
return {
attrs: {
domain: domain_array,
// TODO Remove when merged
// https://github.com/odoo/odoo/pull/25922
string: human_domain.getHumanDomain(
this,
this.model,
domain_array
),
},
children: [],
tag: "filter",
};
},
});
// Add advanced search features
FilterMenu.include({
custom_events: _.extend({}, FilterMenu.prototype.custom_events, {
"domain_selected": "advanced_search_commit",
}),
events: _.extend({}, FilterMenu.prototype.events, {
"click .o_add_advanced_search": "advanced_search_open",
}),
/**
* @override
*/
init: function () {
this._super.apply(this, arguments);
this.trigger_up("get_dataset");
},
/**
* Open advanced search dialog
*
* @returns {$.Deferred} The opening dialog itself.
*/
advanced_search_open: function () {
var domain_selector_dialog = new DomainSelectorDialog(
this,
this.dataset.model,
"[]",
{
debugMode: core.debug,
readonly: false,
}
);
domain_selector_dialog.opened(function () {
// Add 1st domain node by default
domain_selector_dialog.domainSelector._onAddFirstButtonClick();
});
return domain_selector_dialog.open();
},
/**
* Apply advanced search on dialog save
*
* @param {OdooEvent} event A `domain_selected` event from the dialog.
*/
advanced_search_commit: function (event) {
_.invoke(this.propositions, "destroy");
var proposition = new AdvancedSearchProposition(
this,
this.dataset.model,
event.data.domain
);
this.propositions = [proposition];
this.commit_search();
},
});
/**
* A search field for relational fields.
*
* It implements and extends the `FieldManagerMixin`, and acts as if it
* were a reduced dummy controller. Some actions "mock" the underlying
* model, since sometimes we use a char widget to fill related fields
* (which is not supported by that widget), and fields need an underlying
* model implementation, which can only hold fake data, given a search view
* has no data on it by definition.
*/
var Relational = Char.extend(FieldManagerMixin, {
tagName: "div",
className: "x2x_container",
attributes: {},
/**
* @override
*/
init: function () {
this._super.apply(this, arguments);
// To make widgets work, we need a model and an empty record
FieldManagerMixin.init.call(this);
this.trigger_up("get_dataset");
// Make equal and not equal appear 1st and 2nd
this.operators = _.sortBy(
this.operators,
function (op) {
switch (op.value) {
case "=":
return -2;
case "!=":
return -1;
default:
return 0;
}
});
// Create dummy record with only the field the user is searching
var params = {
fieldNames: [this.field.name],
modelName: this.dataset.model,
context: this.dataset.context,
fields: {},
type: "record",
viewType: "default",
fieldsInfo: {
default: {},
},
};
// See https://stackoverflow.com/a/11508530/1468388
// to know how to include this in the previous step in ES6
params.fields[this.field.name] = _.omit(
this.field,
// User needs all records, to actually produce a new domain
"domain",
// Onchanges make no sense in this context, there's no record
"onChange"
);
if (this.field.type.endsWith("2many")) {
// X2many fields behave like m2o in the search context
params.fields[this.field.name].type = "many2one";
}
params.fieldsInfo.default[this.field.name] = {};
// Emulate `model.load()`, without RPC-calling `default_get()`
this.datapoint_id = this.model._makeDataPoint(params).id;
this.model.applyDefaultValues(
this.datapoint_id,
{},
params.fieldNames
);
// To generate a new fake ID
this._fake_id = -1;
},
/**
* @override
*/
start: function () {
var result = this._super.apply(this, arguments);
// Render the initial widget
result.done($.proxy(this, "show_inputs", $("<input value='='/>")));
return result;
},
/**
* @override
*/
destroy: function () {
if (this._field_widget) {
this._field_widget.destroy();
}
this.model.destroy();
delete this.record;
return this._super.apply(this, arguments);
},
/**
* Get record object for current datapoint.
*
* @returns {Object}
*/
_get_record: function () {
return this.model.get(this.datapoint_id);
},
/**
* @override
*/
show_inputs: function ($operator) {
// Get widget class to be used
switch ($operator.val()) {
case "=":
case "!=":
this._field_widget_name = "many2one";
break;
default:
this._field_widget_name = "char";
}
var _Widget = field_registry.get(this._field_widget_name);
// Destroy previous widget, if any
if (this._field_widget) {
this._field_widget.destroy();
delete this._field_widget;
}
// Create new widget
var options = {
mode: "edit",
attrs: {
options: {
no_create_edit: true,
no_create: true,
no_open: true,
no_quick_create: true,
},
},
};
this._field_widget = new _Widget(
this,
this.field.name,
this._get_record(),
options
);
this._field_widget.appendTo(this.$el);
return this._super.apply(this, arguments);
},
/**
* @override
*/
_applyChanges: function (dataPointID, changes, event) {
// Make char updates look like valid x2one updates
if (_.isNaN(changes[this.field.name].id)) {
changes[this.field.name] = {
id: this._fake_id--,
display_name: event.target.lastSetValue,
};
}
return FieldManagerMixin._applyChanges.apply(this, arguments);
},
/**
* @override
*/
_confirmChange: function (id, fields, event) {
this.datapoint_id = id;
return this._field_widget.reset(this._get_record(), event);
},
/**
* @override
*/
get_value: function () {
try {
switch (this._field_widget_name) {
case "many2one":
return this._field_widget.value.res_id;
default:
return this._field_widget.value.data.display_name;
}
} catch (error) {
if (error.name === "TypeError") {
return false;
}
}
},
/**
* Extract the field's value in a human-readable format.
*
* @override
*/
toString: function () {
try {
switch (this._field_widget_name) {
case "many2one":
return this._field_widget.value.data.display_name;
}
return this._super.apply(this, arguments);
} catch (error) {
if (error.name === "TypeError") {
return "";
}
}
},
});
// Register search filter widgets
core.search_filters_registry
.add("many2many", Relational)
.add("many2one", Relational)
.add("one2many", Relational);
return {
AdvancedSearchProposition: AdvancedSearchProposition,
Relational: Relational,
};
});

13
web_advanced_search/static/src/xml/web_advanced_search.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2017-2018 Jairo Llopis <jairo.llopis@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<templates>
<t t-extend="SearchView.FilterMenu">
<t t-jquery=".o_filters_menu" t-operation="append">
<li class="divider"/>
<li>
<a class="o_add_advanced_search">Add Advanced Filter</a>
</li>
</t>
</t>
</templates>

14
web_advanced_search/views/templates.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2017-2018 Jairo Llopis <jairo.llopis@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<template id="assets_backend" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/web_advanced_search/static/src/css/web_advanced_search.less"/>
<script type="text/javascript" src="/web_advanced_search/static/src/js/human_domain.js"/>
<script type="text/javascript" src="/web_advanced_search/static/src/js/web_advanced_search.js"/>
</xpath>
</template>
</odoo>

2
web_decimal_numpad_dot/__manifest__.py

@ -8,7 +8,7 @@
{
"name": "Web - Numpad Dot as decimal separator",
"version": "11.0.1.0.2",
"version": "11.0.1.0.3",
"license": "AGPL-3",
"summary": "Allows using numpad dot to enter period decimal separator",
"depends": [

28
web_decimal_numpad_dot/static/src/js/numpad_dot.js

@ -7,36 +7,30 @@ odoo.define("web_decimal_numpad_dot.FieldFloat", function (require) {
var translation = require("web.translation");
var NumpadDotReplaceMixin = {
init: function () {
this.events = $.extend({}, this.events, {
"keyup": "numpad_dot_replace",
});
return this._super.apply(this, arguments);
},
l10n_decimal_point: function () {
return this.widget == "float_time"
return this.formatType === "float_time"
? ":" : translation._t.database.parameters.decimal_point;
},
numpad_dot_replace: function (event) {
String.prototype.replaceAt=function(index, replacement) {
return this.substr(0, index) + replacement + this.substr(index + replacement.length);
}
_replaceAt: function (cur_val, from, to, replacement) {
return cur_val.substring(0, from) + replacement +
cur_val.substring(to);
},
_onKeydown: function (event) {
// Only act on numpad dot key
event.stopPropagation()
if (event.keyCode != 110) {
return;
if (event.keyCode !== 110) {
return this._super.apply(this, arguments);
}
event.preventDefault();
var from = this.$input.prop("selectionStart"),
to = this.$input.prop("selectionEnd"),
cur_val = this.$input.val(),
point = this.l10n_decimal_point();
var new_val = cur_val.replaceAt(from-1, point)
var new_val = this._replaceAt(cur_val, from, to, point);
this.$input.val(new_val);
// Put user caret in place
to = from + point.length
to = from + point.length;
this.$input.prop("selectionStart", to).prop("selectionEnd", to);
},
};

4
web_dialog_size/static/src/js/web_dialog_size.js

@ -16,8 +16,8 @@ Dialog.include({
return this._super.apply(this, arguments).then(function () {
self.$modal.find('.dialog_button_extend').on('click', self.proxy('_extending'));
self.$modal.find('.dialog_button_restore').on('click', self.proxy('_restore'));
return config.done(function(default_maximize) {
if (default_maximize) {
return config.done(function(r) {
if (r.default_maximize) {
self._extending();
} else {
self._restore();

98
web_editor_background_color/README.rst

@ -0,0 +1,98 @@
==================================
Web Editor Background Color Picker
==================================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 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-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/11.0/web_editor_background_color
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_editor_background_color
: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/11.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module extends the functionality of the web editor to support
setting a custom background color to any snippet allowing you to customize it.
.. figure:: https://user-images.githubusercontent.com/973709/46802401-1c915180-cd55-11e8-9397-f198548a690c.gif
:alt: Screenshot of color picker in mass mailing editor
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
#. Install any module that makes use of the web editor, such as
``mass_mailing`` or ``website``.
#. Use that module's facilities to edit some web content.
#. Drag & drop any snippet into the web editor body.
#. Click on *Customize > Text-Image > Background Color > </> icon*.
#. Choose a custom color by either:
* Writing any valid HTML color code in the text input.
* Selecting a color from the color picker.
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_editor_background_color%0Aversion:%2011.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
~~~~~~~
* Tecnativa
Contributors
~~~~~~~~~~~~
* Jairo Llopis <jairo.llopis@tecnativa.com> - https://www.tecnativa.com
Other credits
~~~~~~~~~~~~~
* This addon includes code copied from bootstrap-colorpicker_
.. _bootstrap-colorpicker: https://github.com/itsjavi/bootstrap-colorpicker/tree/2.5.3
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/11.0/web_editor_background_color>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

0
web_editor_background_color/__init__.py

22
web_editor_background_color/__manifest__.py

@ -0,0 +1,22 @@
# Copyright 2017 Jairo Llopis <jairo.llopis@tecnativa.com>
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
{
"name": "Web Editor Background Color Picker",
"summary": "Set any background color for web editor snippets",
"version": "11.0.1.0.0",
"category": "Website",
"website": "https://www.tecnativa.com",
"author": "Tecnativa, Odoo Community Association (OCA)",
"license": "LGPL-3",
"application": False,
"installable": True,
"images": [
"static/description/mass_mailing_editor.png",
],
"depends": [
"web_editor",
],
"data": [
"templates/assets.xml",
],
}

22
web_editor_background_color/i18n/ca.po

@ -0,0 +1,22 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_editor_background_color
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-30 08:28+0000\n"
"PO-Revision-Date: 2017-03-30 08:28+0000\n"
"Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\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"
#~ msgid "Color"
#~ msgstr "Color"

21
web_editor_background_color/i18n/es.po

@ -0,0 +1,21 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_mail_snippet_bg_color
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-09 16:32+0000\n"
"PO-Revision-Date: 2016-02-09 17:33+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 1.8.6\n"
#~ msgid "Pick Background Color"
#~ msgstr "Escoger el color de fondo"

23
web_editor_background_color/i18n/fr.po

@ -0,0 +1,23 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_mail_snippet_bg_color
#
# Translators:
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: social (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-06-30 01:07+0000\n"
"PO-Revision-Date: 2016-06-17 14:52+0000\n"
"Last-Translator: Christophe CHAUVET <christophe.chauvet@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-social-8-0/language/"
"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"
#~ msgid "Pick Background Color"
#~ msgstr "Mettre la couleur de fond"

24
web_editor_background_color/i18n/sl.po

@ -0,0 +1,24 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * website_mail_snippet_bg_color
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2016
msgid ""
msgstr ""
"Project-Id-Version: social (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-02-27 01:40+0000\n"
"PO-Revision-Date: 2016-02-27 16:56+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-social-8-0/"
"language/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"
#~ msgid "Pick Background Color"
#~ msgstr "Izbira barve ozadja"

14
web_editor_background_color/i18n/web_editor_background_color.pot

@ -0,0 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
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"

1
web_editor_background_color/readme/CONTRIBUTORS.rst

@ -0,0 +1 @@
* Jairo Llopis <jairo.llopis@tecnativa.com> - https://www.tecnativa.com

3
web_editor_background_color/readme/CREDITS.rst

@ -0,0 +1,3 @@
* This addon includes code copied from bootstrap-colorpicker_
.. _bootstrap-colorpicker: https://github.com/itsjavi/bootstrap-colorpicker/tree/2.5.3

5
web_editor_background_color/readme/DESCRIPTION.rst

@ -0,0 +1,5 @@
This module extends the functionality of the web editor to support
setting a custom background color to any snippet allowing you to customize it.
.. figure:: https://user-images.githubusercontent.com/973709/46802401-1c915180-cd55-11e8-9397-f198548a690c.gif
:alt: Screenshot of color picker in mass mailing editor

10
web_editor_background_color/readme/USAGE.rst

@ -0,0 +1,10 @@
To use this module, you need to:
#. Install any module that makes use of the web editor, such as
``mass_mailing`` or ``website``.
#. Use that module's facilities to edit some web content.
#. Drag & drop any snippet into the web editor body.
#. Click on *Customize > Text-Image > Background Color > </> icon*.
#. Choose a custom color by either:
* Writing any valid HTML color code in the text input.
* Selecting a color from the color picker.

BIN
web_editor_background_color/static/description/icon.png

After

Width: 145  |  Height: 122  |  Size: 8.1 KiB

445
web_editor_background_color/static/description/index.html

@ -0,0 +1,445 @@
<?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.14: http://docutils.sourceforge.net/" />
<title>Web Editor Background Color Picker</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z 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 }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
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, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.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;
}
table.align-center {
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 } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
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="web-editor-background-color-picker">
<h1 class="title">Web Editor Background Color Picker</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/web/tree/11.0/web_editor_background_color"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/web-11-0/web-11-0-web_editor_background_color"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/162/11.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module extends the functionality of the web editor to support
setting a custom background color to any snippet allowing you to customize it.</p>
<div class="figure">
<img alt="Screenshot of color picker in mass mailing editor" src="https://user-images.githubusercontent.com/973709/46802401-1c915180-cd55-11e8-9397-f198548a690c.gif" />
</div>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#other-credits" id="id6">Other credits</a></li>
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Install any module that makes use of the web editor, such as
<tt class="docutils literal">mass_mailing</tt> or <tt class="docutils literal">website</tt>.</li>
<li>Use that module’s facilities to edit some web content.</li>
<li>Drag &amp; drop any snippet into the web editor body.</li>
<li>Click on <em>Customize &gt; Text-Image &gt; Background Color &gt; &lt;/&gt; icon</em>.</li>
<li>Choose a custom color by either:
* Writing any valid HTML color code in the text input.
* Selecting a color from the color picker.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_editor_background_color%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li>Jairo Llopis &lt;<a class="reference external" href="mailto:jairo.llopis&#64;tecnativa.com">jairo.llopis&#64;tecnativa.com</a>&gt; - <a class="reference external" href="https://www.tecnativa.com">https://www.tecnativa.com</a></li>
</ul>
</div>
<div class="section" id="other-credits">
<h2><a class="toc-backref" href="#id6">Other credits</a></h2>
<ul class="simple">
<li>This addon includes code copied from <a class="reference external" href="https://github.com/itsjavi/bootstrap-colorpicker/tree/2.5.3">bootstrap-colorpicker</a></li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>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.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/11.0/web_editor_background_color">OCA/web</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

21
web_editor_background_color/static/src/css/background_color.less

@ -0,0 +1,21 @@
/* Copyright 2017 Jairo Llopis <jairo.llopis@tecnativa.com>
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
.colorpicker-element {
@colorpicker-width: 170px;
@colorpicker-height: 118px;
.colorpicker-inline {
min-width: initial;
display: block;
margin-top: 3px !important;
}
.colorpicker-saturation {
width: @colorpicker-height;
height: @colorpicker-height;
}
.colorpicker-hue, .colorpicker-alpha {
width: (@colorpicker-width - @colorpicker-height) / 2;
height: @colorpicker-height;
}
}

103
web_editor_background_color/static/src/js/background_color.js

@ -0,0 +1,103 @@
/* Copyright 2016-2017 Jairo Llopis <jairo.llopis@tecnativa.com>
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
odoo.define("web_editor_background_color.colorpicker", function (require) {
"use strict";
var options = require("web_editor.snippets.options");
var colorpicker = options.registry.colorpicker;
colorpicker.include({
events: _.extend({}, colorpicker.prototype.events, {
"changeColor [data-name=custom_color]":
"set_inline_background_color",
// Remove inline background-color for normal class-based buttons
"click .o_colorpicker_section button[data-color]":
"remove_inline_background_color",
"click [data-name=custom_color] input": "input_select",
"click [data-name=custom_color]": "custom_abort_event",
"keydown [data-name=custom_color]": "custom_abort_event",
"keypress [data-name=custom_color]": "custom_abort_event",
"keyup [data-name=custom_color]": "custom_abort_event",
}),
xmlDependencies: colorpicker.prototype.xmlDependencies.concat([
"/web_editor_background_color/static/src/xml/colorpicker.xml",
]),
/**
* @override
*/
start: function () {
this._super();
// Enable custom color picker
this.$custom = this.$el.find('[data-name="custom_color"]');
this.$custom.colorpicker({
color: this.$target.css("background-color"),
container: true,
inline: true,
sliders: {
saturation: {
maxLeft: 118,
maxTop: 118,
},
hue: {
maxTop: 118,
},
alpha: {
maxTop: 118,
},
},
});
// Activate border color changes if it matches background's
var style = this.$target.prop("style");
this.change_border =
style["border-color"] &&
style["background-color"] === style["border-color"];
},
/**
* A HACK to avoid dropdown disappearing when picking colors
*
* @param {Event} event
*/
custom_abort_event: function (event) {
event.stopPropagation();
},
/**
* Select the color picker input
*
* @param {Event} event
*/
input_select: function (event) {
$(event.target).focus().select();
},
/**
* Undo the inline background color, besides upstream color classes
*
* @override
*/
_onColorResetButtonClick: function (event) {
this._super.apply(this, arguments);
this.$target.css("background-color", "");
if (this.change_border) {
this.$target.css("border-color", "");
}
this.$target.trigger("background-color-event", event.type);
},
/**
* Apply the chosen color as an inline style
*
* @param {Event} event
*/
set_inline_background_color: function (event) {
var color = String(event.color);
this.$target.css("background-color", color);
if (this.change_border) {
this.$target.css("border-color", color);
}
this.$target.trigger("background-color-event", event.type);
},
});
});

230
web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.css
File diff suppressed because it is too large
View File

1327
web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.js
File diff suppressed because it is too large
View File

18
web_editor_background_color/static/src/xml/colorpicker.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2017 Jairo Llopis <jairo.llopis@tecnativa.com>
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). -->
<templates>
<t t-extend="web_editor.colorpicker">
<t t-jquery="colorpicker" t-operation="append">
<div
class="o_colorpicker_section"
data-name="custom_color"
data-icon-class="fa fa-code">
<input type="text" class="form-control" />
</div>
</t>
</t>
</templates>

18
web_editor_background_color/templates/assets.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2017 Jairo Llopis <jairo.llopis@tecnativa.com>
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). -->
<odoo>
<template id="assets_editor" inherit_id="web_editor.assets_editor">
<xpath expr=".">
<!-- External library bootstrap-colorpicker -->
<link rel="stylesheet" href="/web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.css"/>
<script type="text/javascript" src="/web_editor_background_color/static/src/lib/bootstrap-colorpicker/bootstrap-colorpicker.js"/>
<!-- Internal assets -->
<link rel="stylesheet" href="/web_editor_background_color/static/src/css/background_color.less"/>
<script type="text/javascript" src="/web_editor_background_color/static/src/js/background_color.js"/>
</xpath>
</template>
</odoo>

81
web_export_view/README.rst

@ -0,0 +1,81 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License
Export Current View
===================
One of the best Odoo's features is exporting custom data to CSV/XLS. You can
do it by clicking on the export link in the sidebar. The export action allows
us to configure what to be exported by selecting fields, etc, and allows you
to save your export as a template so that you can export it once again without
having to configure it again.
That feature is as great and advanced as limited for an everyday experience.
A lot of customers want simply to export the tree view they are looking to.
If you miss this feature as us, probably you'll find an answer into our
web_export_view module.
Configuration
=============
If we wanted to disallow users to use the features provided by this module, we
can add them to the group *Disallow Export View Data to Excel*.
Usage
=====
After you installed it, you'll find an additional link 'Export current view'
right on the sidebar. By clicking on it you'll get a XLS file contains
the same data of the tree view you are looking at, headers included.
Known Issues
============
Pedro M. Baeza (pedro.baeza@gmail.com):
When you have groups, they are not exported to Excel. It would be desirable to have this option.
One of the problems with this module is that you can't export data from a view with mode="tree".
Changing the approach to have the button always visible (we should relocate it also to another place,
as the current location is not visible for these views), and digging correctly in the DOM elements
for this view (very similar to the normal tree view one) will do the trick. This will also help users
to locate the feature, as it's hidden now by default and users don't think about selecting records.
The behavior will be: nothing selected > you export all (including groups).
Something or all selected: export the selection.
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.
Credits
=======
Contributors
------------
* Henry Zhou (MAXodoo) <zhouhenry@live.com>
* Rodney <https://github.com/rv-clearcorp>
* Simone Orsi <simahawk@gmail.com>
* Lorenzo Battistini <lorenzo.battistini@agilebg.com>
* Stefan Rijnhart <stefan@therp.nl>
* Leonardo Pistone <leonardo.pistone@camptocamp.com>
* Jose Maria Bernet <josemaria.bernet@guadaltech.es>
* David Vidal <david.vidal@tecnativa.com>
Maintainer
----------
.. image:: http://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: http://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

3
web_export_view/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

30
web_export_view/__manifest__.py

@ -0,0 +1,30 @@
# Copyright 2012 Agile Business Group
# Copyright 2012 Domsense srl (<http://www.domsense.com>)
# Copyright 2012 Therp BV
# Copyright 2016 Henry Zhou (http://www.maxodoo.com)
# Copyright 2016 Rodney (http://clearcorp.cr/)
# Copyright 2019 Tecnativa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Web Export Current View',
'version': '11.0.2.0.0',
'category': 'Web',
'author': 'Henry Zhou, Agile Business Group, \
Odoo Community Association (OCA)',
'website': 'https://github.com/OCA/web',
'license': 'AGPL-3',
'depends': [
'web',
],
"data": [
'security/groups.xml',
'views/web_export_view_view.xml',
],
'qweb': [
"static/src/xml/web_export_view_template.xml",
],
'installable': True,
'auto_install': False,
}

1
web_export_view/controllers/__init__.py

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

34
web_export_view/controllers/controllers.py

@ -0,0 +1,34 @@
# Copyright 2016 Henry Zhou (http://www.maxodoo.com)
# Copyright 2016 Rodney (http://clearcorp.cr/)
# Copyright 2012 Agile Business Group
# Copyright 2012 Therp BV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import json
import odoo.http as http
from odoo.http import request
from odoo.addons.web.controllers.main import ExcelExport
class ExcelExportView(ExcelExport):
def __getattribute__(self, name):
if name == 'fmt':
raise AttributeError()
return super(ExcelExportView, self).__getattribute__(name)
@http.route('/web/export/xls_view', type='http', auth='user')
def export_xls_view(self, data, token):
data = json.loads(data)
model = data.get('model', [])
columns_headers = data.get('headers', [])
rows = data.get('rows', [])
return request.make_response(
self.from_data(columns_headers, rows),
headers=[
('Content-Disposition', 'attachment; filename="%s"'
% self.filename(model)),
('Content-Type', self.content_type)
],
cookies={'fileToken': token}
)

41
web_export_view/i18n/da.po

@ -0,0 +1,41 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: da\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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr ""

45
web_export_view/i18n/de.po

@ -0,0 +1,45 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# Translators:
# Niki Waibel <niki.waibel@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-28 18:03+0000\n"
"PO-Revision-Date: 2017-04-28 18:03+0000\n"
"Last-Translator: Niki Waibel <niki.waibel@gmail.com>, 2017\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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "Exportiere xls"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "Falsch"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "Richtig"

45
web_export_view/i18n/es.po

@ -0,0 +1,45 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-28 18:03+0000\n"
"PO-Revision-Date: 2017-04-28 18:03+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "Exportar XLS"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "Falso"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "Verdadero"

46
web_export_view/i18n/hr.po

@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-28 18:03+0000\n"
"PO-Revision-Date: 2017-04-28 18:03+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "Izvoz u XLS"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "NE"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "DA"

46
web_export_view/i18n/nl_NL.po

@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# 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:34+0000\n"
"PO-Revision-Date: 2017-07-01 03:34+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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "Exporteer xls"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "Fout"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "Waar"

47
web_export_view/i18n/pt_BR.po

@ -0,0 +1,47 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# Translators:
# 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: 2017-06-22 08:26+0000\n"
"PO-Revision-Date: 2017-06-22 08:26+0000\n"
"Last-Translator: Rodrigo de Almeida Sottomaior Macedo "
"<rmsolucoeseminformatic4@gmail.com>, 2017\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"
#. module: web_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "Exportar xls"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "Falso"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "Verdadeiro"

41
web_export_view/i18n/web_export_view.pot

@ -0,0 +1,41 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
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_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr ""

46
web_export_view/i18n/zh_CN.po

@ -0,0 +1,46 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_export_view
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-28 18:03+0000\n"
"PO-Revision-Date: 2017-04-28 18:03+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
"zh_CN/)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: web_export_view
#: model:res.groups,name:web_export_view.group_disallow_export_view_data_excel
msgid "Disallow Export View Data to Excel"
msgstr ""
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/xml/web_export_view_template.xml:6
#, python-format
msgid "Export xls"
msgstr "导出 xls"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "False"
msgstr "否"
#. module: web_export_view
#. openerp-web
#: code:addons/web_export_view/static/src/js/web_export_view.js:76
#, python-format
msgid "True"
msgstr "是"

9
web_export_view/security/groups.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_disallow_export_view_data_excel" model="res.groups">
<field name="name">Disallow Export View Data to Excel</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
</odoo>

BIN
web_export_view/static/description/icon.png

After

Width: 128  |  Height: 126  |  Size: 3.5 KiB

118
web_export_view/static/src/js/web_export_view.js

@ -0,0 +1,118 @@
odoo.define('web_export_view', function (require) {
"use strict";
var core = require('web.core');
var Sidebar = require('web.Sidebar');
var session = require('web.session');
var crash_manager = require('web.crash_manager');
var QWeb = core.qweb;
var _t = core._t;
Sidebar.include({
_redraw: function () {
var self = this;
this._super.apply(this, arguments);
if (self.getParent().renderer.viewType == 'list') {
session.user_has_group('web_export_view.group_disallow_export_view_data_excel').then(function (has_group) {
if (!has_group) {
self.$el.find('.o_dropdown').last().append(QWeb.render('WebExportTreeViewXls', { widget: self }));
self.$el.find('.export_treeview_xls').on('click', self.on_sidebar_export_treeview_xls);
}
});
}
},
on_sidebar_export_treeview_xls: function () {
// Select the first list of the current (form) view
// or assume the main view is a list view and use that
var self = this,
view = this.getParent(),
children = view.getChildren();
var c = crash_manager;
if (children) {
children.every(function (child) {
if (child.field && child.field.type == 'one2many') {
view = child.viewmanager.views.list.controller;
return false; // break out of the loop
}
if (child.field && child.field.type == 'many2many') {
view = child.list_view;
return false; // break out of the loop
}
return true;
});
}
var export_columns_keys = [];
var export_columns_names = [];
var column_index = 0;
var column_header_selector;
$.each(view.renderer.columns, function () {
if (this.tag == 'field' && (this.attrs.widget === undefined || this.attrs.widget != 'handle')) {
// non-fields like `_group` or buttons
export_columns_keys.push(column_index);
column_header_selector = '.o_list_view > thead > tr> th:not([class*="o_list_record_selector"]):eq('+column_index+')';
export_columns_names.push(view.$el.find(column_header_selector)[0].textContent);
}
column_index ++;
});
var export_rows = [];
$.blockUI();
if (children) {
// find only rows with data
view.$el.find('.o_list_view > tbody > tr.o_data_row:has(.o_list_record_selector input:checkbox:checked)')
.each(function () {
var $row = $(this);
var export_row = [];
$.each(export_columns_keys, function () {
var $cell = $row.find('td.o_data_cell:eq('+this+')')
var $cellcheckbox = $cell.find('.o_checkbox input:checkbox');
if ($cellcheckbox.length) {
export_row.push(
$cellcheckbox.is(":checked")
? _t("True") : _t("False")
);
}
else {
var text = $cell.text().trim();
var is_number = (
$cell.hasClass('o_list_number') &&
!$cell.hasClass('o_float_time_cell')
);
if (is_number) {
export_row.push(parseFloat(
text
// Remove thousands separator
.split(_t.database.parameters.thousands_sep)
.join("")
// Always use a `.` as decimal separator
.replace(_t.database.parameters.decimal_point, ".")
// Remove non-numeric characters
.replace(/[^\d\.-]/g, "")
));
} else {
export_row.push(text);
}
}
});
export_rows.push(export_row);
});
}
session.get_file({
url: '/web/export/xls_view',
data: {data: JSON.stringify({
model: view.modelName,
headers: export_columns_names,
rows: export_rows
})},
complete: $.unblockUI,
error: c.rpc_error.bind(c)
});
}
});
});

11
web_export_view/static/src/xml/web_export_view_template.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="WebExportTreeViewXls">
<div class="o_cp_sidebar btn-group btn-group-sm">
<button class="btn btn-default export_treeview_xls" type="button" title="Export xls">
<i t-translation="off" class="fa fa-file-excel-o"></i>
</button>
</div>
</t>
</templates>

9
web_export_view/views/web_export_view_view.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="web_export_view assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_export_view/static/src/js/web_export_view.js"></script>
</xpath>
</template>
</odoo>

62
web_favicon/i18n/ca.po

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_favicon
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2018-10-10 21:51+0000\n"
"Last-Translator: Harald Panten <harald.panten@qubiq.es>\n"
"Language-Team: none\n"
"Language: ca\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_favicon
#: model:ir.model,name:web_favicon.model_res_company
msgid "Companies"
msgstr "Companyies"
#. module: web_favicon
#: model:ir.ui.view,arch_db:web_favicon.view_company_form
msgid "Favicon"
msgstr "Favicon"
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend
msgid "Favicon Backend"
msgstr "Favicon del backend"
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype
msgid "Favicon Backend Mimetype"
msgstr "Tipus MIME del favicon de backend"
#. module: web_favicon
#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype
msgid "Set the mimetype of your file."
msgstr "Estableixi el tipus MIME del seu arxiu."
#. module: web_favicon
#: model:ir.ui.view,arch_db:web_favicon.view_company_form
msgid "Web Favicon"
msgstr "Favicon web"
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/gif"
msgstr "image/gif"
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/png"
msgstr "image/png"
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/x-icon"
msgstr "image/x-icon"

62
web_favicon/i18n/da.po

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_favicon
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2018-09-02 06:11+0000\n"
"Last-Translator: Hans Henrik Gabelgaard <hhg@gabelgaard.org>\n"
"Language-Team: none\n"
"Language: da\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_favicon
#: model:ir.model,name:web_favicon.model_res_company
msgid "Companies"
msgstr "Virksomheder"
#. module: web_favicon
#: model:ir.ui.view,arch_db:web_favicon.view_company_form
msgid "Favicon"
msgstr ""
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend
msgid "Favicon Backend"
msgstr ""
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype
msgid "Favicon Backend Mimetype"
msgstr ""
#. module: web_favicon
#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype
msgid "Set the mimetype of your file."
msgstr "Sæt mimetypen af din fil."
#. module: web_favicon
#: model:ir.ui.view,arch_db:web_favicon.view_company_form
msgid "Web Favicon"
msgstr ""
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/gif"
msgstr ""
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/png"
msgstr ""
#. module: web_favicon
#: selection:res.company,favicon_backend_mimetype:0
msgid "image/x-icon"
msgstr ""

11
web_favicon/i18n/es.po

@ -9,14 +9,15 @@ msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-23 02:13+0000\n"
"PO-Revision-Date: 2016-12-23 02:13+0000\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2016\n"
"PO-Revision-Date: 2018-10-11 22:11+0000\n"
"Last-Translator: Harald Panten <harald.panten@qubiq.es>\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.1.1\n"
#. module: web_favicon
#: model:ir.model,name:web_favicon.model_res_company
@ -30,20 +31,18 @@ msgstr "Favicon"
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend
#, fuzzy
msgid "Favicon Backend"
msgstr "Favicon del backend"
#. module: web_favicon
#: model:ir.model.fields,field_description:web_favicon.field_res_company_favicon_backend_mimetype
#, fuzzy
msgid "Favicon Backend Mimetype"
msgstr "Tipo MIME del favicon de backend"
#. module: web_favicon
#: model:ir.model.fields,help:web_favicon.field_res_company_favicon_backend_mimetype
msgid "Set the mimetype of your file."
msgstr "Establece el tipo MIME de su archivo."
msgstr "Establezca el tipo MIME de su archivo."
#. module: web_favicon
#: model:ir.ui.view,arch_db:web_favicon.view_company_form

2
web_listview_range_select/__manifest__.py

@ -6,7 +6,7 @@
'summary': """
Enables selecting a range of records using the shift key
""",
'version': '11.0.1.0.0',
'version': '11.0.1.0.1',
'category': 'Web',
'author': 'Onestein,Odoo Community Association (OCA)',
'website': 'https://github.com/oca/web',

10
web_listview_range_select/static/src/js/web_listview_range_select.js

@ -38,7 +38,7 @@ odoo.define('web_listview_range_select', function (require) {
var new_range = this.get_range_selection(start, end);
result.records = result.records.concat(new_range.records);
result.ids = result.ids.concat(new_range.ids);
result.ids = _.uniq(result.ids.concat(new_range.ids));
return result;
},
@ -80,9 +80,13 @@ odoo.define('web_listview_range_select', function (require) {
if (selection.ids.indexOf(record_id) != -1)
$(this).find('td.o_list_record_selector input').prop('checked', true);
});
//Check input internal
$(self).trigger(
'selected', [selection.ids, selection.records, true]);
this.trigger_up(
'selection_changed', {
'selection': selection.ids
}
);
}
return res;
}

20
web_m2x_options/i18n/ar.po

@ -28,70 +28,70 @@ msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:52
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "إلغاء"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, python-format
msgid "Create and Edit..."
msgstr "إنشاء وتحرير ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:42
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, python-format
msgid "Search More..."
msgstr "البحث عن المزيد ..."
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:58
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

20
web_m2x_options/i18n/de.po

@ -28,70 +28,70 @@ 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
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Abbrechen"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr "Anlegen"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

20
web_m2x_options/i18n/es.po

@ -27,70 +27,70 @@ msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:52
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Cancelar"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr "Crear"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, 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?"

20
web_m2x_options/i18n/fi.po

@ -27,70 +27,70 @@ msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:52
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Peru"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

20
web_m2x_options/i18n/fr.po

@ -27,70 +27,70 @@ msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:52
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Annuler"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

20
web_m2x_options/i18n/hr.po

@ -29,70 +29,70 @@ 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
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Otkaži"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr "Kreiraj"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, 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?"

20
web_m2x_options/i18n/it.po

@ -27,70 +27,70 @@ msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:52
#: code:addons/web_m2x_options/static/src/js/form.js:54
#, python-format
msgid "Cancel"
msgstr "Annulla"
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:31
#: code:addons/web_m2x_options/static/src/js/form.js:33
#, python-format
msgid "Create"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:241
#: code:addons/web_m2x_options/static/src/js/form.js:243
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:30
#, python-format
msgid "Create a %s"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:261
#: code:addons/web_m2x_options/static/src/js/form.js:263
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:44
#, python-format
msgid "Create and edit"
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:267
#: code:addons/web_m2x_options/static/src/js/form.js:269
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:342
#, python-format
msgid "Open: "
msgstr ""
#. module: web_m2x_options
#. openerp-web
#: code:addons/web_m2x_options/static/src/js/form.js:206
#: code:addons/web_m2x_options/static/src/js/form.js:208
#, 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
#: code:addons/web_m2x_options/static/src/js/form.js:60
#, python-format
msgid "You are creating a new %s, are you sure it does not exist yet?"
msgstr ""

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save