Browse Source

init version 14.0

14.0
Mathias Markl 4 years ago
parent
commit
85e8ca6eb5
  1. 36
      .travis.yml
  2. 10
      README.md
  3. 51
      muk_web_theme/.gitignore
  4. 124
      muk_web_theme/README.rst
  5. 12
      muk_web_theme/__init__.py
  6. 11
      muk_web_theme/__manifest__.py
  7. 4
      muk_web_theme/data/res_company.xml
  8. 36
      muk_web_theme/doc/changelog.rst
  9. 375
      muk_web_theme/i18n/de.po
  10. 368
      muk_web_theme/i18n/es.po
  11. 369
      muk_web_theme/i18n/fr.po
  12. 368
      muk_web_theme/i18n/muk_web_theme.pot
  13. 368
      muk_web_theme/i18n/nl.po
  14. 5
      muk_web_theme/models/__init__.py
  15. 6
      muk_web_theme/models/ir_http.py
  16. 17
      muk_web_theme/models/res_company.py
  17. 64
      muk_web_theme/models/res_config_settings.py
  18. 24
      muk_web_theme/models/res_users.py
  19. 146
      muk_web_theme/models/scss_editor.py
  20. 242
      muk_web_theme/static/description/index.html
  21. BIN
      muk_web_theme/static/description/preview.png
  22. BIN
      muk_web_theme/static/description/screenshot_mobile_form.png
  23. BIN
      muk_web_theme/static/description/screenshot_mobile_search.png
  24. 23
      muk_web_theme/static/libs/simplebar/simplebar.css
  25. 2
      muk_web_theme/static/libs/simplebar/simplebar.js
  26. 70
      muk_web_theme/static/src/components/control_panel.js
  27. 65
      muk_web_theme/static/src/components/control_panel.xml
  28. 41
      muk_web_theme/static/src/js/chrome/actions.js
  29. 44
      muk_web_theme/static/src/js/chrome/apps.js
  30. 39
      muk_web_theme/static/src/js/chrome/appsbar.js
  31. 56
      muk_web_theme/static/src/js/chrome/menu.js
  32. 50
      muk_web_theme/static/src/js/chrome/pager.js
  33. 50
      muk_web_theme/static/src/js/chrome/sidebar.js
  34. 50
      muk_web_theme/static/src/js/core/search.js
  35. 30
      muk_web_theme/static/src/js/fields/relational.js
  36. 4
      muk_web_theme/static/src/js/libs/scrollbar.js
  37. 44
      muk_web_theme/static/src/js/views/form_renderer.js
  38. 23
      muk_web_theme/static/src/js/views/form_view.js
  39. 28
      muk_web_theme/static/src/js/views/kanban_column.js
  40. 34
      muk_web_theme/static/src/js/views/kanban_quick_create.js
  41. 271
      muk_web_theme/static/src/js/views/kanban_renderer.js
  42. 107
      muk_web_theme/static/src/js/views/list_renderer.js
  43. 4
      muk_web_theme/static/src/scss/apps.scss
  44. 4
      muk_web_theme/static/src/scss/appsbar.scss
  45. 4
      muk_web_theme/static/src/scss/colors.scss
  46. 114
      muk_web_theme/static/src/scss/control_panel.scss
  47. 4
      muk_web_theme/static/src/scss/fields.scss
  48. 4
      muk_web_theme/static/src/scss/fonts.scss
  49. 11
      muk_web_theme/static/src/scss/form_view.scss
  50. 82
      muk_web_theme/static/src/scss/kanban_view.scss
  51. 4
      muk_web_theme/static/src/scss/layout.scss
  52. 59
      muk_web_theme/static/src/scss/list_view.scss
  53. 4
      muk_web_theme/static/src/scss/mixins.scss
  54. 4
      muk_web_theme/static/src/scss/navbar.scss
  55. 4
      muk_web_theme/static/src/scss/notification.scss
  56. 4
      muk_web_theme/static/src/scss/search_view.scss
  57. 4
      muk_web_theme/static/src/scss/settings.scss
  58. 4
      muk_web_theme/static/src/scss/variables.scss
  59. 4
      muk_web_theme/static/src/xml/apps.xml
  60. 4
      muk_web_theme/static/src/xml/appsbar.xml
  61. 4
      muk_web_theme/static/src/xml/base.xml
  62. 4
      muk_web_theme/static/src/xml/navbar.xml
  63. 4
      muk_web_theme/static/src/xml/shortcuts.xml
  64. 37
      muk_web_theme/static/src/xml/sidebar.xml
  65. 4
      muk_web_theme/static/src/xml/views.xml
  66. 15
      muk_web_theme/template/assets.xml
  67. 14
      muk_web_theme/template/web.xml
  68. 51
      muk_web_theme/views/res_config_settings_view.xml
  69. 6
      muk_web_theme/views/res_users.xml
  70. 165
      muk_web_theme_mail/LICENSE
  71. 114
      muk_web_theme_mail/README.rst
  72. 21
      muk_web_theme_mail/__init__.py
  73. 54
      muk_web_theme_mail/__manifest__.py
  74. 9
      muk_web_theme_mail/doc/changelog.rst
  75. 114
      muk_web_theme_mail/doc/index.rst
  76. 16
      muk_web_theme_mail/i18n/de.po
  77. 16
      muk_web_theme_mail/i18n/es.po
  78. 16
      muk_web_theme_mail/i18n/fr.po
  79. 16
      muk_web_theme_mail/i18n/muk_web_theme_mail.pot
  80. 16
      muk_web_theme_mail/i18n/nl.po
  81. BIN
      muk_web_theme_mail/static/description/banner.png
  82. BIN
      muk_web_theme_mail/static/description/icon.png
  83. 1
      muk_web_theme_mail/static/description/icon.svg
  84. 133
      muk_web_theme_mail/static/description/index.html
  85. BIN
      muk_web_theme_mail/static/description/logo.png
  86. BIN
      muk_web_theme_mail/static/description/preview.png
  87. BIN
      muk_web_theme_mail/static/description/screenshot.png
  88. BIN
      muk_web_theme_mail/static/description/service_customization.png
  89. BIN
      muk_web_theme_mail/static/description/service_development.png
  90. BIN
      muk_web_theme_mail/static/description/service_implementation.png
  91. BIN
      muk_web_theme_mail/static/description/service_integration.png
  92. BIN
      muk_web_theme_mail/static/description/service_support.png
  93. 45
      muk_web_theme_mail/static/src/js/chatter.js
  94. 211
      muk_web_theme_mail/static/src/js/discuss.js
  95. 42
      muk_web_theme_mail/static/src/js/keyboard.js
  96. 110
      muk_web_theme_mail/static/src/scss/chatter.scss
  97. 33
      muk_web_theme_mail/static/src/xml/discuss.xml
  98. 50
      muk_web_theme_mail/static/src/xml/shortcuts.xml
  99. 43
      muk_web_theme_mail/static/src/xml/systray.xml
  100. 38
      muk_web_theme_mail/template/assets.xml

36
.travis.yml

@ -1,36 +0,0 @@
language: python
python:
- "3.6"
notifications:
email: false
sudo: false
cache: pip
addons:
postgresql: "9.6"
apt:
packages:
- expect-dev
- python3-lxml
- python3-simplejson
- python3-serial
env:
global:
- VERSION="13.0" TESTS="1" LINT_CHECK="0"
matrix:
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1"
install:
- git clone https://github.com/OCA/maintainer-quality-tools.git ${HOME}/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
script:
- travis_run_tests
after_success:
- travis_after_tests_success

10
README.md

@ -1,9 +1,7 @@
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
[![Build Status](https://travis-ci.org/muk-it/muk_web.svg?branch=13.0)](https://travis-ci.org/muk-it/muk_web)
[![codecov](https://codecov.io/gh/muk-it/muk_web/branch/13.0/graph/badge.svg)](https://codecov.io/gh/muk-it/muk_web)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/eff47569926c435d98a3187623615bc4)](https://www.codacy.com/app/keshrath/muk_web?utm_source=github.com&utm_medium=referral&utm_content=muk-it/muk_web&utm_campaign=Badge_Grade)
[![Weblate](https://weblate.mukit.at/widgets/web-13/-/svg-badge.svg)](https://weblate.mukit.at/projects/web-13/)
[![Demo](https://img.shields.io/badge/demo-Try%20me-243742.svg)](https://mukit.at/r/SgN)
[![Nexus](https://img.shields.io/badge/Nexus-Install%20me-5d8da8.svg)](https://nexus.mukit.at/#browse/browse:odoo)
[![Weblate](https://img.shields.io/badge/Weblate-Translate%20me-0094E9.svg)](https://weblate.mukit.at)
[![Website](https://img.shields.io/badge/Website-Open%20me-243742.svg)](https://mukit.at/)
# MuK Odoo Web Modules # MuK Odoo Web Modules
@ -36,7 +34,7 @@ underscores are replaced by a dash.
**Example:** **Example:**
`sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo11-addon-muk-utils`
`sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo13-addon-muk-utils`
Once the installation has been successfully completed, the app is Once the installation has been successfully completed, the app is
already in the correct folder. Log on to your Odoo server and go to the already in the correct folder. Log on to your Odoo server and go to the

51
muk_web_theme/.gitignore

@ -0,0 +1,51 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
# C extensions
*.so
# Distribution / packaging
.Python
env/
bin/
develop-eggs/
dist/
eggs/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
*.eggs
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml
# Pycharm
.idea
# Eclipse
.project
.pydevproject
.settings/
# Rope
.ropeproject
# Sphinx documentation
docs/_build/
# Backup files
*~
*.swp

124
muk_web_theme/README.rst

@ -1,124 +0,0 @@
=============
MuK Web Theme
=============
This module offers a mobile compatible design for Odoo Community. Furthermore
it allows the user to define some design preferences. So he can choose the
size of the sidebar and the position of the chatter. In addition, the background
image of the app menu can be set for each company.
Installation
============
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
list by clicking on the "Update Apps List" link. Now install the module by
clicking on the install button.
Another way to install this module is via the package management for Python
(`PyPI <https://pypi.org/project/pip/>`_).
To install our modules using the package manager make sure
`odoo-autodiscover <https://pypi.org/project/odoo-autodiscover/>`_ is installed
correctly. Then open a console and install the module by entering the following
command:
``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
The module name consists of the Odoo version and the module name, where
underscores are replaced by a dash.
**Module:**
``odoo<version>-addon-<module_name>``
**Example:**
``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo11-addon-muk-utils``
Once the installation has been successfully completed, the app is already in the
correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the
debug mode and update the list by clicking on the "Update Apps List" link. Now
install the module by clicking on the install button.
The biggest advantage of this variant is that you can now also update the app
using the "pip" command. To do this, enter the following command in your console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo. The steps are the same as for the installation only the button has changed
from "Install" to "Upgrade".
You can also view available Apps directly in our `repository <https://nexus.mukit.at/#browse/browse:odoo>`_
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_.
For modules licensed under OPL-1, you will receive access data when you purchase
the module. If the modules were not purchased directly from
`MuK IT <https://www.mukit.at/>`_ please contact our support (support@mukit.at)
with a confirmation of purchase to receive the corresponding access data.
Upgrade
============
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server
and log on to your Odoo server. Select the Apps menu and upgrade the module by
clicking on the upgrade button.
If you installed the module using the "pip" command, you can also update the
module in the same way. Just type the following command into the console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo, just like you would normally.
Configuration
=============
No additional configuration is needed to use this module.
Usage
=============
After the module is installed, the design is adjusted accordingly.
Credits
=======
Contributors
------------
* Mathias Markl <mathias.markl@mukit.at>
Images
------------
Some pictures are based on or inspired by:
* `Freepik <https://www.flaticon.com/authors/freepik>`_
Projects
------------
Parts of the module are inspired by:
* `Web Responsive <https://github.com/OCA/web>`_
* `List Range Selection <https://github.com/OCA/web>`_
* `Openworx Backend Theme <https://github.com/Openworx/backend_theme>`_
Author & Maintainer
-------------------
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_.
MuK IT is an Austrian company specialized in customizing and extending Odoo.
We develop custom solutions for your individual needs to help you focus on
your strength and expertise to grow your business.
If you want to get in touch please contact us via mail
(sale@mukit.at) or visit our website (https://mukit.at).

12
muk_web_theme/__init__.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -24,14 +24,10 @@ from odoo import api, SUPERUSER_ID
from . import models from . import models
#----------------------------------------------------------
# Hooks
#----------------------------------------------------------
XML_ID = "muk_web_theme._assets_primary_variables" XML_ID = "muk_web_theme._assets_primary_variables"
SCSS_URL = "/muk_web_theme/static/src/scss/colors.scss" SCSS_URL = "/muk_web_theme/static/src/scss/colors.scss"
def _uninstall_reset_changes(cr, registry): def _uninstall_reset_changes(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {}) env = api.Environment(cr, SUPERUSER_ID, {})
env['muk_utils.scss_editor'].reset_values(SCSS_URL, XML_ID)
env['muk_web_theme.scss_editor'].reset_values(SCSS_URL, XML_ID)

11
muk_web_theme/__manifest__.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -19,10 +19,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
################################################################################### ###################################################################################
{ {
"name": "MuK Backend Theme", "name": "MuK Backend Theme",
"summary": "Odoo Community Backend Theme", "summary": "Odoo Community Backend Theme",
"version": "13.0.1.0.6",
"version": "14.0.1.0.0",
"category": "Themes/Backend", "category": "Themes/Backend",
"license": "LGPL-3", "license": "LGPL-3",
"author": "MuK IT", "author": "MuK IT",
@ -30,10 +31,9 @@
'live_test_url': 'https://mukit.at/r/SgN', 'live_test_url': 'https://mukit.at/r/SgN',
"contributors": [ "contributors": [
"Mathias Markl <mathias.markl@mukit.at>", "Mathias Markl <mathias.markl@mukit.at>",
"Benedikt Jilek <benedikt.jilek@mukit.at>",
], ],
"depends": [ "depends": [
"muk_web_utils",
"web_editor",
], ],
"excludes": [ "excludes": [
"web_enterprise", "web_enterprise",
@ -46,6 +46,7 @@
"data/res_company.xml", "data/res_company.xml",
], ],
"qweb": [ "qweb": [
"static/src/components/control_panel.xml",
"static/src/xml/*.xml", "static/src/xml/*.xml",
], ],
"images": [ "images": [

4
muk_web_theme/data/res_company.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

36
muk_web_theme/doc/changelog.rst

@ -1,39 +1,3 @@
`1.6.0`
-------
- Required Color Option
`1.5.0`
-------
- Mobile Pager Pages
`1.4.0`
-------
- Background Blend Mode
`1.3.0`
-------
- Default Preferences
`1.2.0`
-------
- Added Menu Color Options
`1.2.0`
-------
- Added AppBar Color Options
`1.1.0`
-------
- Added Color Customize Options
`1.0.0` `1.0.0`
------- -------

375
muk_web_theme/i18n/de.po

@ -1,375 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_web_theme
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-24 22:00+0000\n"
"PO-Revision-Date: 2019-06-27 08:23+0000\n"
"Last-Translator: MuK IT <admin@mukit.at>\n"
"Language-Team: German <http://weblate.mukit.at/projects/web-12/muk_web_theme/"
"de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.7\n"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:25
#, python-format
msgid "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
msgstr "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Background Image</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" aria-label=\"Values set here are company-specific.\" groups=\"base.group_multi_company\" role=\"img\"/>"
msgstr ""
"<span class=\"o_form_label\">Hintergrundbild</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\""
"Die hier eingestellten Werte sind unternehmensspezifisch.\" aria-label=\"Die "
"hier eingestellten Werte sind unternehmensspezifisch.\" groups=\"base."
"group_multi_company\" role=\"img\"/>"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Default Preferences</span>"
msgstr "<span class=\"o_form_label\">Default-Einstellungen</span>"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Menu Colors</span>"
msgstr "<span class=\"o_form_label\">Menüfarben</span>"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Theme Colors</span>"
msgstr "<span class=\"o_form_label\">Themenfarben</span>"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:26
#, python-format
msgid "Actions"
msgstr "Aktionen"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:28
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Alt"
msgstr "Alt"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Blend"
msgstr "Apps Mischung"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Color"
msgstr "Apps Farbe"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_blend_mode
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_blend_mode
msgid "Apps Menu Background Blend Mode"
msgstr "Apps Menü Hintergrund Mischmodus"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_image
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_image
msgid "Apps Menu Background Image"
msgstr "Applikationsmenü Hintergrundbild"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Backend Theme"
msgstr "Backendmotiv"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Background"
msgstr "Hintergrund"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Brand"
msgstr "Markenzeichen"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Chatter"
msgstr "Klappern"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__chatter_position
msgid "Chatter Position"
msgstr "Klapperposition"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color"
msgstr "Farbe"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-burn"
msgstr "Farbverbrennung"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-dodge"
msgstr "Farbabweichung"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_company
msgid "Companies"
msgstr "Unternehmen"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_config_settings
msgid "Config Settings"
msgstr "Konfiguration "
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Control"
msgstr "Kontrolle"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:47
#: code:addons/muk_web_theme/static/src/xml/views.xml:68
#, python-format
msgid "Create"
msgstr "Erstellen"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Darken"
msgstr "Verdunkeln"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Difference"
msgstr "Unterschied"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:59
#: code:addons/muk_web_theme/static/src/xml/views.xml:82
#, python-format
msgid "Discard"
msgstr "Verwerfen"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:41
#, python-format
msgid "Edit"
msgstr "Bearbeiten"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Exclusion"
msgstr "Ausschluss"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_ir_http
msgid "HTTP Routing"
msgstr "HTTP-Routing"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hard-light"
msgstr "Hartes Licht"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hue"
msgstr "Farbton"
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Invisible"
msgstr "Unsichtbar"
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Large"
msgstr "Groß"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Lighten"
msgstr "Aufhellen"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Luminosity"
msgstr "Leuchtkraft"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Menu Color"
msgstr "Menüfarbe"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Multiply"
msgstr "Multiplizieren"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Normal"
msgstr "Normal"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:26
#, python-format
msgid "Open the apps menu"
msgstr "Öffnen Sie das App-Menü."
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Overlay"
msgstr "Überlagerung"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Primary"
msgstr "Primär"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Saturation"
msgstr "Sättigung"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:53
#: code:addons/muk_web_theme/static/src/xml/views.xml:75
#, python-format
msgid "Save"
msgstr "Speichern"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Screen"
msgstr "Bildschirm"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/js/views/search_view.js:34
#, python-format
msgid "Search"
msgstr "Suche"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:42
#, python-format
msgid "Search menus..."
msgstr "Suche Menüs..."
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the background image for the apps menu"
msgstr "Setzt das Hintergrundbild für das App-Menü."
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the default theme preferences"
msgstr "Legen Sie die Standardeinstellungen für das Design fest."
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main menu colors"
msgstr "Einstellen der Farben des Hauptmenüs"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main theme colors"
msgstr "Legen Sie die Farben des Hauptthemas fest"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Sidebar"
msgstr "Sidebar"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__sidebar_type
msgid "Sidebar Type"
msgstr "Typ der Seitenleiste"
#. module: muk_web_theme
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Sided"
msgstr "Seitlich"
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Small"
msgstr "Klein"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_background
msgid "Theme AppBar Background"
msgstr "Thema AppBar Hintergrund"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_color
msgid "Theme AppBar Color"
msgstr "Thema AppBar Farbe"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_brand
msgid "Theme Brand Color"
msgstr "Motiv Markenfarbe"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_menu
msgid "Theme Menu Color"
msgstr "Themenmenü Farbe"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_users_preferences
msgid "Theme Preferences"
msgstr "Motivvorgaben"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_primary
msgid "Theme Primary Color"
msgstr "Motivhauptfarbe"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_users
msgid "Users"
msgstr "Benutzer"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:31
#, python-format
msgid "fa fa-th"
msgstr "fa fa fa-th"

368
muk_web_theme/i18n/es.po

@ -1,368 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_web_theme
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-24 22:00+0000\n"
"PO-Revision-Date: 2019-06-24 22:00+0000\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: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:25
#, python-format
msgid "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Background Image</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" aria-label=\"Values set here are company-specific.\" groups=\"base.group_multi_company\" role=\"img\"/>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Default Preferences</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Menu Colors</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Theme Colors</span>"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:26
#, python-format
msgid "Actions"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:28
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Alt"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Blend"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_blend_mode
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_blend_mode
msgid "Apps Menu Background Blend Mode"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_image
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_image
msgid "Apps Menu Background Image"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Backend Theme"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Background"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Brand"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Chatter"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__chatter_position
msgid "Chatter Position"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-burn"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-dodge"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_config_settings
msgid "Config Settings"
msgstr "Opciones de Configuración"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Control"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:47
#: code:addons/muk_web_theme/static/src/xml/views.xml:68
#, python-format
msgid "Create"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Darken"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Difference"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:59
#: code:addons/muk_web_theme/static/src/xml/views.xml:82
#, python-format
msgid "Discard"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:41
#, python-format
msgid "Edit"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Exclusion"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_ir_http
msgid "HTTP Routing"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hard-light"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hue"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Invisible"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Large"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Lighten"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Luminosity"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Menu Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Multiply"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Normal"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:26
#, python-format
msgid "Open the apps menu"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Overlay"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Primary"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Saturation"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:53
#: code:addons/muk_web_theme/static/src/xml/views.xml:75
#, python-format
msgid "Save"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Screen"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/js/views/search_view.js:34
#, python-format
msgid "Search"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:42
#, python-format
msgid "Search menus..."
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the background image for the apps menu"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the default theme preferences"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main menu colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main theme colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Sidebar"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__sidebar_type
msgid "Sidebar Type"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Sided"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Small"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_background
msgid "Theme AppBar Background"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_color
msgid "Theme AppBar Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_brand
msgid "Theme Brand Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_menu
msgid "Theme Menu Color"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_users_preferences
msgid "Theme Preferences"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_primary
msgid "Theme Primary Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_users
msgid "Users"
msgstr "Usuarios"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:31
#, python-format
msgid "fa fa-th"
msgstr ""

369
muk_web_theme/i18n/fr.po

@ -1,369 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_web_theme
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-24 22:00+0000\n"
"PO-Revision-Date: 2019-06-24 22:00+0000\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: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:25
#, python-format
msgid "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Background Image</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" aria-label=\"Values set here are company-specific.\" groups=\"base.group_multi_company\" role=\"img\"/>"
msgstr "<span class=\"o_form_label\">Image de fond</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Les valeurs ici sont spécifiques à chaque société.\" aria-label=\"Les valeurs ici sont spécifiques à chaque société.\" groups=\"base.group_multi_company\" role=\"img\"/>"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Default Preferences</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Menu Colors</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Theme Colors</span>"
msgstr "<span class=\"o_form_label\">Couleurs du thème</span>"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:26
#, python-format
msgid "Actions"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:28
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Alt"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Blend"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_blend_mode
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_blend_mode
msgid "Apps Menu Background Blend Mode"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_image
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_image
msgid "Apps Menu Background Image"
msgstr "Image de fond du menu d'applications"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Backend Theme"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Background"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Brand"
msgstr "Marque"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Chatter"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__chatter_position
msgid "Chatter Position"
msgstr "Position du Chatter"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-burn"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-dodge"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres de config"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Control"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:47
#: code:addons/muk_web_theme/static/src/xml/views.xml:68
#, python-format
msgid "Create"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Darken"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Difference"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:59
#: code:addons/muk_web_theme/static/src/xml/views.xml:82
#, python-format
msgid "Discard"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:41
#, python-format
msgid "Edit"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Exclusion"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_ir_http
msgid "HTTP Routing"
msgstr "Routage HTTP"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hard-light"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hue"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Invisible"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Large"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Lighten"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Luminosity"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Menu Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Multiply"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Normal"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:26
#, python-format
msgid "Open the apps menu"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Overlay"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Primary"
msgstr "Principal"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Saturation"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:53
#: code:addons/muk_web_theme/static/src/xml/views.xml:75
#, python-format
msgid "Save"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Screen"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/js/views/search_view.js:34
#, python-format
msgid "Search"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:42
#, python-format
msgid "Search menus..."
msgstr "Menus de recherche..."
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the background image for the apps menu"
msgstr "Fixer l'image de fond pour le menu des applications"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the default theme preferences"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main menu colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main theme colors"
msgstr "Fixer les couleurs du thème principal"
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Sidebar"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__sidebar_type
msgid "Sidebar Type"
msgstr "Type de barre latérale"
#. module: muk_web_theme
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Sided"
msgstr "Sur le côté"
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Small"
msgstr "Petit"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_background
msgid "Theme AppBar Background"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_color
msgid "Theme AppBar Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_brand
msgid "Theme Brand Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_menu
msgid "Theme Menu Color"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_users_preferences
msgid "Theme Preferences"
msgstr "Préférences du thème"
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_primary
msgid "Theme Primary Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_users
msgid "Users"
msgstr "Utilisateurs"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:31
#, python-format
msgid "fa fa-th"
msgstr ""

368
muk_web_theme/i18n/muk_web_theme.pot

@ -1,368 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_web_theme
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-24 22:00+0000\n"
"PO-Revision-Date: 2019-06-24 22:00+0000\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: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:25
#, python-format
msgid "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Background Image</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" aria-label=\"Values set here are company-specific.\" groups=\"base.group_multi_company\" role=\"img\"/>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Default Preferences</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Menu Colors</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Theme Colors</span>"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:26
#, python-format
msgid "Actions"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:28
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Alt"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Blend"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_blend_mode
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_blend_mode
msgid "Apps Menu Background Blend Mode"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_image
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_image
msgid "Apps Menu Background Image"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Backend Theme"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Background"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Brand"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Chatter"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__chatter_position
msgid "Chatter Position"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-burn"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-dodge"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_company
msgid "Companies"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Control"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:47
#: code:addons/muk_web_theme/static/src/xml/views.xml:68
#, python-format
msgid "Create"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Darken"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Difference"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:59
#: code:addons/muk_web_theme/static/src/xml/views.xml:82
#, python-format
msgid "Discard"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:41
#, python-format
msgid "Edit"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Exclusion"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_ir_http
msgid "HTTP Routing"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hard-light"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hue"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Invisible"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Large"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Lighten"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Luminosity"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Menu Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Multiply"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Normal"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:26
#, python-format
msgid "Open the apps menu"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Overlay"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Primary"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Saturation"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:53
#: code:addons/muk_web_theme/static/src/xml/views.xml:75
#, python-format
msgid "Save"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Screen"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/js/views/search_view.js:34
#, python-format
msgid "Search"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:42
#, python-format
msgid "Search menus..."
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the background image for the apps menu"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the default theme preferences"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main menu colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main theme colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Sidebar"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__sidebar_type
msgid "Sidebar Type"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Sided"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Small"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_background
msgid "Theme AppBar Background"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_color
msgid "Theme AppBar Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_brand
msgid "Theme Brand Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_menu
msgid "Theme Menu Color"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_users_preferences
msgid "Theme Preferences"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_primary
msgid "Theme Primary Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_users
msgid "Users"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:31
#, python-format
msgid "fa fa-th"
msgstr ""

368
muk_web_theme/i18n/nl.po

@ -1,368 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * muk_web_theme
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190522\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-06-24 22:01+0000\n"
"PO-Revision-Date: 2019-06-24 22:01+0000\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: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:25
#, python-format
msgid "#menu_id=#{app.menuID}&action_id=#{app.actionID}"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Background Image</span>\n"
" <span class=\"fa fa-lg fa-building-o\" title=\"Values set here are company-specific.\" aria-label=\"Values set here are company-specific.\" groups=\"base.group_multi_company\" role=\"img\"/>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Default Preferences</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Menu Colors</span>"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "<span class=\"o_form_label\">Theme Colors</span>"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:26
#, python-format
msgid "Actions"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:28
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Alt"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Blend"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Apps Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_blend_mode
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_blend_mode
msgid "Apps Menu Background Blend Mode"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__background_image
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_background_image
msgid "Apps Menu Background Image"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Backend Theme"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Background"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Brand"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Chatter"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_chatter_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__chatter_position
msgid "Chatter Position"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-burn"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Color-dodge"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_company
msgid "Companies"
msgstr "Bedrijven"
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_config_settings
msgid "Config Settings"
msgstr "Configuratie instellingen"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:31
#, python-format
msgid "Control"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:47
#: code:addons/muk_web_theme/static/src/xml/views.xml:68
#, python-format
msgid "Create"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Darken"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Difference"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:59
#: code:addons/muk_web_theme/static/src/xml/views.xml:82
#, python-format
msgid "Discard"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:41
#, python-format
msgid "Edit"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Exclusion"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_ir_http
msgid "HTTP Routing"
msgstr "HTTP routing"
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hard-light"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Hue"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Invisible"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Large"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Lighten"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Luminosity"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Menu Color"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Multiply"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Normal"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/shortcuts.xml:26
#, python-format
msgid "Open the apps menu"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Overlay"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Primary"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Saturation"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/views.xml:53
#: code:addons/muk_web_theme/static/src/xml/views.xml:75
#, python-format
msgid "Save"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,background_blend_mode:0
msgid "Screen"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/js/views/search_view.js:34
#, python-format
msgid "Search"
msgstr ""
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:42
#, python-format
msgid "Search menus..."
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the background image for the apps menu"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the default theme preferences"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main menu colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Set the main theme colors"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_config_settings_view_form
msgid "Sidebar"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_company__default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_default_sidebar_preference
#: model:ir.model.fields,field_description:muk_web_theme.field_res_users__sidebar_type
msgid "Sidebar Type"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_chatter_preference:0
#: selection:res.users,chatter_position:0
msgid "Sided"
msgstr ""
#. module: muk_web_theme
#: selection:res.company,default_sidebar_preference:0
#: selection:res.users,sidebar_type:0
msgid "Small"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_background
msgid "Theme AppBar Background"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_appbar_color
msgid "Theme AppBar Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_brand
msgid "Theme Brand Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_menu
msgid "Theme Menu Color"
msgstr ""
#. module: muk_web_theme
#: model_terms:ir.ui.view,arch_db:muk_web_theme.res_users_preferences
msgid "Theme Preferences"
msgstr ""
#. module: muk_web_theme
#: model:ir.model.fields,field_description:muk_web_theme.field_res_config_settings__theme_color_primary
msgid "Theme Primary Color"
msgstr ""
#. module: muk_web_theme
#: model:ir.model,name:muk_web_theme.model_res_users
msgid "Users"
msgstr "Gebruikers"
#. module: muk_web_theme
#. openerp-web
#: code:addons/muk_web_theme/static/src/xml/apps.xml:31
#, python-format
msgid "fa fa-th"
msgstr ""

5
muk_web_theme/models/__init__.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -23,4 +23,5 @@
from . import res_company from . import res_company
from . import res_users from . import res_users
from . import ir_http from . import ir_http
from . import scss_editor
from . import res_config_settings from . import res_config_settings

6
muk_web_theme/models/ir_http.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -30,7 +30,7 @@ class IrHttp(models.AbstractModel):
def session_info(self): def session_info(self):
result = super(IrHttp, self).session_info() result = super(IrHttp, self).session_info()
params = request.env['ir.config_parameter'].with_user(self.env.ref('base.user_admin'))
params = request.env['ir.config_parameter'].sudo()
blend_mode = params.get_param('muk_web_theme.background_blend_mode') blend_mode = params.get_param('muk_web_theme.background_blend_mode')
result.update(muk_web_theme_background_blend_mode=blend_mode or 'normal') result.update(muk_web_theme_background_blend_mode=blend_mode or 'normal')
return result return result

17
muk_web_theme/models/res_company.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -22,6 +22,7 @@
from odoo import models, fields from odoo import models, fields
class ResCompany(models.Model): class ResCompany(models.Model):
_inherit = 'res.company' _inherit = 'res.company'
@ -32,7 +33,8 @@ class ResCompany(models.Model):
background_image = fields.Binary( background_image = fields.Binary(
string="Apps Menu Background Image", string="Apps Menu Background Image",
attachment=True)
attachment=True
)
background_blend_mode = fields.Selection( background_blend_mode = fields.Selection(
selection=[ selection=[
@ -54,7 +56,8 @@ class ResCompany(models.Model):
('luminosity', 'Luminosity'), ('luminosity', 'Luminosity'),
], ],
string="Apps Menu Background Blend Mode", string="Apps Menu Background Blend Mode",
default='normal')
default='normal'
)
default_sidebar_preference = fields.Selection( default_sidebar_preference = fields.Selection(
selection=[ selection=[
@ -63,7 +66,8 @@ class ResCompany(models.Model):
('large', 'Large') ('large', 'Large')
], ],
string="Sidebar Type", string="Sidebar Type",
default='small')
default='small'
)
default_chatter_preference = fields.Selection( default_chatter_preference = fields.Selection(
selection=[ selection=[
@ -71,4 +75,5 @@ class ResCompany(models.Model):
('sided', 'Sided'), ('sided', 'Sided'),
], ],
string="Chatter Position", string="Chatter Position",
default='sided')
default='sided'
)

64
muk_web_theme/models/res_config_settings.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -29,6 +29,7 @@ from odoo import api, fields, models
XML_ID = "muk_web_theme._assets_primary_variables" XML_ID = "muk_web_theme._assets_primary_variables"
SCSS_URL = "/muk_web_theme/static/src/scss/colors.scss" SCSS_URL = "/muk_web_theme/static/src/scss/colors.scss"
class ResConfigSettings(models.TransientModel): class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings' _inherit = 'res.config.settings'
@ -37,59 +38,54 @@ class ResConfigSettings(models.TransientModel):
# Database # Database
#---------------------------------------------------------- #----------------------------------------------------------
module_muk_web_theme_mail = fields.Boolean(
string="Theme Mail",
help="Optimizes the mail chatter for the theme.")
module_muk_web_theme_branding = fields.Boolean(
string="Theme Branding",
help="Customize the theme according to your needs.")
module_muk_web_theme_website = fields.Boolean(
string="Theme Website",
help="Add theme styled website navigation.")
module_muk_web_theme_mobile = fields.Boolean(
string="Theme Mobile",
help="Allow Odoo to be used as a PWA app.")
theme_favicon = fields.Binary( theme_favicon = fields.Binary(
related="company_id.favicon", related="company_id.favicon",
readonly=False)
readonly=False
)
theme_background_image = fields.Binary( theme_background_image = fields.Binary(
related="company_id.background_image", related="company_id.background_image",
readonly=False)
readonly=False
)
theme_background_blend_mode = fields.Selection( theme_background_blend_mode = fields.Selection(
related="company_id.background_blend_mode", related="company_id.background_blend_mode",
readonly=False)
readonly=False
)
theme_default_sidebar_preference = fields.Selection( theme_default_sidebar_preference = fields.Selection(
related="company_id.default_sidebar_preference", related="company_id.default_sidebar_preference",
readonly=False)
readonly=False
)
theme_default_chatter_preference = fields.Selection( theme_default_chatter_preference = fields.Selection(
related="company_id.default_chatter_preference", related="company_id.default_chatter_preference",
readonly=False)
readonly=False
)
theme_color_brand = fields.Char( theme_color_brand = fields.Char(
string="Theme Brand Color")
string="Theme Brand Color"
)
theme_color_primary = fields.Char( theme_color_primary = fields.Char(
string="Theme Primary Color")
string="Theme Primary Color"
)
theme_color_required = fields.Char( theme_color_required = fields.Char(
string="Theme Required Color")
string="Theme Required Color"
)
theme_color_menu = fields.Char( theme_color_menu = fields.Char(
string="Theme Menu Color")
string="Theme Menu Color"
)
theme_color_appbar_color = fields.Char( theme_color_appbar_color = fields.Char(
string="Theme AppBar Color")
string="Theme AppBar Color"
)
theme_color_appbar_background = fields.Char( theme_color_appbar_background = fields.Char(
string="Theme AppBar Background")
string="Theme AppBar Background"
)
#---------------------------------------------------------- #----------------------------------------------------------
# Functions # Functions
@ -97,7 +93,7 @@ class ResConfigSettings(models.TransientModel):
def set_values(self): def set_values(self):
res = super(ResConfigSettings, self).set_values() res = super(ResConfigSettings, self).set_values()
param = self.env['ir.config_parameter'].with_user(self.env.ref('base.user_admin'))
param = self.env['ir.config_parameter'].sudo()
variables = [ variables = [
'o-brand-odoo', 'o-brand-odoo',
'o-brand-primary', 'o-brand-primary',
@ -106,7 +102,7 @@ class ResConfigSettings(models.TransientModel):
'mk-appbar-color', 'mk-appbar-color',
'mk-appbar-background', 'mk-appbar-background',
] ]
colors = self.env['muk_utils.scss_editor'].get_values(
colors = self.env['muk_web_theme.scss_editor'].get_values(
SCSS_URL, XML_ID, variables SCSS_URL, XML_ID, variables
) )
colors_changed = [] colors_changed = []
@ -125,7 +121,7 @@ class ResConfigSettings(models.TransientModel):
{'name': 'mk-appbar-color', 'value': self.theme_color_appbar_color or "#dee2e6"}, {'name': 'mk-appbar-color', 'value': self.theme_color_appbar_color or "#dee2e6"},
{'name': 'mk-appbar-background', 'value': self.theme_color_appbar_background or "#000000"}, {'name': 'mk-appbar-background', 'value': self.theme_color_appbar_background or "#000000"},
] ]
self.env['muk_utils.scss_editor'].replace_values(
self.env['muk_web_theme.scss_editor'].replace_values(
SCSS_URL, XML_ID, variables SCSS_URL, XML_ID, variables
) )
param.set_param('muk_web_theme.background_blend_mode', self.theme_background_blend_mode) param.set_param('muk_web_theme.background_blend_mode', self.theme_background_blend_mode)
@ -134,7 +130,7 @@ class ResConfigSettings(models.TransientModel):
@api.model @api.model
def get_values(self): def get_values(self):
res = super(ResConfigSettings, self).get_values() res = super(ResConfigSettings, self).get_values()
params = self.env['ir.config_parameter'].with_user(self.env.ref('base.user_admin'))
params = self.env['ir.config_parameter'].sudo()
variables = [ variables = [
'o-brand-odoo', 'o-brand-odoo',
'o-brand-primary', 'o-brand-primary',
@ -143,7 +139,7 @@ class ResConfigSettings(models.TransientModel):
'mk-appbar-color', 'mk-appbar-color',
'mk-appbar-background', 'mk-appbar-background',
] ]
colors = self.env['muk_utils.scss_editor'].get_values(
colors = self.env['muk_web_theme.scss_editor'].get_values(
SCSS_URL, XML_ID, variables SCSS_URL, XML_ID, variables
) )
res.update({ res.update({

24
muk_web_theme/models/res_users.py

@ -1,8 +1,8 @@
################################################################################### ###################################################################################
# #
# Copyright (c) 2017-2019 MuK IT GmbH.
# Copyright (c) 2017-today MuK IT GmbH.
# #
# This file is part of MuK Backend Theme
# This file is part of MuK Grid Snippets
# (see https://mukit.at). # (see https://mukit.at).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -22,6 +22,7 @@
from odoo import models, fields, api from odoo import models, fields, api
class ResUsers(models.Model): class ResUsers(models.Model):
_inherit = 'res.users' _inherit = 'res.users'
@ -50,7 +51,8 @@ class ResUsers(models.Model):
], ],
required=True, required=True,
string="Sidebar Type", string="Sidebar Type",
default=lambda self: self._default_sidebar_type())
default=lambda self: self._default_sidebar_type()
)
chatter_position = fields.Selection( chatter_position = fields.Selection(
selection=[ selection=[
@ -59,7 +61,8 @@ class ResUsers(models.Model):
], ],
required=True, required=True,
string="Chatter Position", string="Chatter Position",
default=lambda self: self._default_chatter_position())
default=lambda self: self._default_chatter_position()
)
#---------------------------------------------------------- #----------------------------------------------------------
# Setup # Setup
@ -67,10 +70,11 @@ class ResUsers(models.Model):
def __init__(self, pool, cr): def __init__(self, pool, cr):
init_res = super(ResUsers, self).__init__(pool, cr) init_res = super(ResUsers, self).__init__(pool, cr)
type(self).SELF_WRITEABLE_FIELDS = list(self.SELF_WRITEABLE_FIELDS)
type(self).SELF_WRITEABLE_FIELDS.extend(['sidebar_type'])
type(self).SELF_WRITEABLE_FIELDS.extend(['chatter_position'])
type(self).SELF_READABLE_FIELDS = list(self.SELF_READABLE_FIELDS)
type(self).SELF_READABLE_FIELDS.extend(['sidebar_type'])
type(self).SELF_READABLE_FIELDS.extend(['chatter_position'])
theme_fields = ['sidebar_type', 'chatter_position']
readable_fields = list(self.SELF_READABLE_FIELDS)
writeable_fields = list(self.SELF_WRITEABLE_FIELDS)
readable_fields.extend(theme_fields)
writeable_fields.extend(theme_fields)
type(self).SELF_READABLE_FIELDS = readable_fields
type(self).SELF_WRITEABLE_FIELDS = writeable_fields
return init_res return init_res

146
muk_web_theme/models/scss_editor.py

@ -0,0 +1,146 @@
###################################################################################
#
# Copyright (c) 2017-today MuK IT GmbH.
#
# This file is part of MuK Grid Snippets
# (see https://mukit.at).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################
import re
import uuid
import base64
from odoo import models, fields, api
from odoo.modules import module
class ScssEditor(models.AbstractModel):
_name = 'muk_web_theme.scss_editor'
_description = 'Scss Editor'
# ----------------------------------------------------------
# Helper
# ----------------------------------------------------------
def _build_custom_url(self, url_parts, xmlid):
return "%s.custom.%s.%s" % (url_parts[0], xmlid, url_parts[1])
def _get_custom_url(self, url, xmlid):
return self._build_custom_url(url.rsplit(".", 1), xmlid)
def _get_custom_attachment(self, url):
return self.env["ir.attachment"].with_context(
bin_size=False, bin_size_datas=False
).search([("url", '=', url)], limit=1)
def _get_custom_view(self, url):
return self.env["ir.ui.view"].search([("name", '=', url)])
def _get_variable(self, content, variable):
regex = r'{0}\:?\s(.*?);'.format(variable)
value = re.search(regex, content)
return value and value.group(1)
def _get_variables(self, content, variables):
return {var: self._get_variable(content, var) for var in variables}
def _replace_variables(self, content, variables):
for variable in variables:
variable_content = '{0}: {1};'.format(
variable['name'],
variable['value']
)
regex = r'{0}\:?\s(.*?);'.format(variable['name'])
content = re.sub(regex, variable_content, content)
return content
# ----------------------------------------------------------
# Read
# ----------------------------------------------------------
def get_content(self, url, xmlid):
custom_url = self._get_custom_url(url, xmlid)
custom_attachment = self._get_custom_attachment(custom_url)
if custom_attachment.exists():
return base64.b64decode(custom_attachment.datas).decode('utf-8')
else:
match = re.compile("^/(\w+)/(.+?)(\.custom\.(.+))?\.(\w+)$").match(url)
module_path = module.get_module_path(match.group(1))
resource_path = "%s.%s" % (match.group(2), match.group(5))
module_resource_path = module.get_resource_path(module_path, resource_path)
with open(module_resource_path, "rb") as file:
return file.read().decode('utf-8')
def get_values(self, url, xmlid, variables):
return self._get_variables(self.get_content(url, xmlid), variables)
# ----------------------------------------------------------
# Write
# ----------------------------------------------------------
def replace_content(self, url, xmlid, content):
custom_url = self._get_custom_url(url, xmlid)
custom_view = self._get_custom_view(custom_url)
custom_attachment = self._get_custom_attachment(custom_url)
datas = base64.b64encode((content or "\n").encode("utf-8"))
if custom_attachment.exists():
custom_attachment.write({"datas": datas})
else:
self.env["ir.attachment"].create({
'name': custom_url,
'type': "binary",
'mimetype': "text/scss",
'datas': datas,
# TODO: old field datas_fname got removed, check if store_fname is correct and write migration
'store_fname': url.split("/")[-1],
'url': custom_url,
})
if not custom_view.exists():
view_to_xpath = self.env["ir.ui.view"].get_related_views(
xmlid, bundles=True
).filtered(lambda v: v.arch.find(url) >= 0)
self.env["ir.ui.view"].create({
'name': custom_url,
'key': 'web_editor.scss_%s' % str(uuid.uuid4())[:6],
'mode': "extension",
'priority': view_to_xpath.priority,
'inherit_id': view_to_xpath.id,
'arch': """
<data inherit_id="%(inherit_xml_id)s" name="%(name)s">
<xpath expr="//link[@href='%(url_to_replace)s']" position="attributes">
<attribute name="href">%(new_url)s</attribute>
</xpath>
</data>
""" % {
'inherit_xml_id': view_to_xpath.xml_id,
'name': custom_url,
'url_to_replace': url,
'new_url': custom_url,
}
})
self.env["ir.qweb"].clear_caches()
def replace_values(self, url, xmlid, variables):
content = self._replace_variables(
self.get_content(url, xmlid), variables
)
self.replace_content(url, xmlid, content)
def reset_values(self, url, xmlid):
custom_url = self._get_custom_url(url, xmlid)
self._get_custom_attachment(custom_url).unlink()
self._get_custom_view(custom_url).unlink()

242
muk_web_theme/static/description/index.html

@ -2,10 +2,10 @@
<div class="oe_row oe_spaced"> <div class="oe_row oe_spaced">
<h2 class="oe_slogan">MuK Backend Theme</h2> <h2 class="oe_slogan">MuK Backend Theme</h2>
<h3 class="oe_slogan">Odoo Community Backend Theme</h3> <h3 class="oe_slogan">Odoo Community Backend Theme</h3>
<h4 class="oe_slogan" style="font-size: 23px;">MuK IT GmbH -
www.mukit.at</h4>
<img src="logo.png" style="width: 150px;" class="mx-auto center-block">
<h4 class="oe_slogan mt-0" style="font-size: 23px">MuK IT GmbH - www.mukit.at</h4>
<div class="oe_demo oe_screenshot" <div class="oe_demo oe_screenshot"
style="max-width: 84%; margin: 16px 8%;">
style="max-width: 84%; margin: 16px 8%">
<img src="screenshot.png"> <img src="screenshot.png">
</div> </div>
</div> </div>
@ -56,7 +56,7 @@
</div> </div>
<div class="mb16 col-md-4 col-lg-3"> <div class="mb16 col-md-4 col-lg-3">
<div class="oe_demo oe_screenshot"> <div class="oe_demo oe_screenshot">
<img src="screenshot_mobile_search.png">
<img src="screenshot_mobile_form.png">
</div> </div>
</div> </div>
<div class="mb16 col-md-4 col-lg-3"> <div class="mb16 col-md-4 col-lg-3">
@ -94,209 +94,87 @@
</div> </div>
</section> </section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="text-justify" style="max-width: 84%; margin: 16px 8%;">
<h3 class="oe_slogan">Theme Extensions</h3>
<div id="apps" class="row carousel slide mb16" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" style="min-height: 0px;">
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_web_theme_mail/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="theme_mail_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
Mail Extension</h4>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_web_theme_branding/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="theme_branding_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
Branding Extension</h4>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_web_theme_website/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="theme_website_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
Website Extension</h4>
</a>
</div>
</div>
<div class="carousel-item" style="min-height: 0px;">
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_mail_branding/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="branding_mail_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
Mail Branding</h4>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_website_branding/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="branding_website_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
Website Branding</h4>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4" style="float: left;">
<a
href="https://apps.odoo.com/apps/modules/12.0/muk_saas_branding/"
target="_blank">
<div class="oe_screenshot">
<img class="img img-fluid img-responsive center-block"
src="branding_saas_banner.png">
</div>
<h4
style="padding: 6% 4%; text-align: center; white-space: nowrap; width: 100%; overflow: hidden; text-overflow: ellipsis;">
SaaS Branding</h4>
</a>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#apps" data-slide="prev"
style="margin-left: 40px; color: #000;"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left" style="font-size: 24px"></i></span>
</a> <a class="carousel-control-next" href="#apps" data-slide="next"
style="margin-right: 40px; color: #000;"> <span
class="carousel-control-next-icon"><i
class="fa fa-chevron-right" style="font-size: 24px"></i></span>
</a>
</div>
<section
class="oe_container oe_dark d-flex justify-content-around align-items-lg-center flex-column flex-lg-row">
<div class="d-flex flex-column m-3 ml-lg-4">
<h3 class="oe_slogan mb-3 mt-3 text-left">
<i class="fa fa-comments mr8"></i>Want more?
</h3>
<p>
Are you having troubles with your Odoo integration? Or do you feel
your system lacks of essential features? <br>If your answer is <b>YES</b>
to one of the above questions, feel free to contact us at anytime
with your inquiry. <br>We are looking forward to discuss your
needs and plan the next steps with you. <br>
</p>
</div>
<div
class="oe_slogan d-flex flex-column ml-1 mr-1 ml-lg-4 mr-lg-4 flex-grow-1">
<a class="btn btn-primary btn-lg m-1 mt-2"
href="mailto:sale@mukit.at?subject=Request%20Quote%3A%20MuK%20Grid%20Snippets"
style="font-size: 1.2rem; position: relative; overflow: hidden;">
<i class="fa fa-envelope mr-1"></i>REQUEST QUOTE
</a>
</div> </div>
</section> </section>
<section class="oe_container oe_dark">
<section class="oe_container">
<div class="oe_row oe_spaced"> <div class="oe_row oe_spaced">
<h3 class="oe_slogan">Our Services</h3> <h3 class="oe_slogan">Our Services</h3>
<div
style="display: flex; padding-top: 20px; justify-content: space-between;">
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/MQ5" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_implementation.png"
style="width: 100%; border-radius: 100%;">
<div class="d-flex justify-content-between">
<div>
<div>
<div style="width: 75px; height: 75px; border-radius: 100%; margin: auto">
<img src="/service_implementation.png" style="width: 100%; border-radius: 100%">
</div> </div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
<h3 class="oe_slogan" style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 5px; color: #000 !important; opacity: 1 !important; line-height: 17px">
Odoo <br>Implementation Odoo <br>Implementation
</h3> </h3>
</a>
</div>
</div> </div>
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/u7c" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_integration.png"
style="width: 100%; border-radius: 100%;">
<div>
<div>
<div style="width: 75px; height: 75px; border-radius: 100%; margin: auto">
<img src="/service_integration.png" style="width: 100%; border-radius: 100%">
</div> </div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
<h3 class="oe_slogan" style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 5px; color: #000 !important; opacity: 1 !important; line-height: 17px">
Odoo <br>Integration Odoo <br>Integration
</h3> </h3>
</a>
</div>
</div> </div>
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/xDJ" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_customization.png"
style="width: 100%; border-radius: 100%;">
<div>
<div>
<div style="width: 75px; height: 75px; border-radius: 100%; margin: auto">
<img src="/service_customization.png" style="width: 100%; border-radius: 100%">
</div> </div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
<h3 class="oe_slogan" style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 5px; color: #000 !important; opacity: 1 !important; line-height: 17px">
Odoo <br>Customization Odoo <br>Customization
</h3> </h3>
</a>
</div>
</div> </div>
<div style="flex-basis: 18%;">
<a href=" https://mukit.at/r/J3A" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_development.png"
style="width: 100%; border-radius: 100%;">
<div>
<div>
<div style="width: 75px; height: 75px; border-radius: 100%; margin: auto">
<img src="/service_development.png" style="width: 100%; border-radius: 100%">
</div> </div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
<h3 class="oe_slogan" style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 5px; color: #000 !important; opacity: 1 !important; line-height: 17px">
Odoo <br>Development Odoo <br>Development
</h3> </h3>
</a>
</div>
</div> </div>
<div style="flex-basis: 18%;">
<a href=" https://mukit.at/r/R1v" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_support.png"
style="width: 100%; border-radius: 100%;">
<div>
<div>
<div style="width: 75px; height: 75px; border-radius: 100%; margin: auto">
<img src="/service_support.png" style="width: 100%; border-radius: 100%">
</div> </div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
<h3 class="oe_slogan" style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 5px; color: #000 !important; opacity: 1 !important; line-height: 17px">
Odoo <br>Support Odoo <br>Support
</h3> </h3>
</a>
</div>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
<section class="oe_container" style="padding: 32px 0;">
<div class="oe_row oe_spaced" style="margin: auto;">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://mukit.at/r/SgN" target="_blank"> <img
src="preview.png">
</a>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h3 class="oe_slogan">Help and Support</h3>
<h5 class="oe_slogan" style="font-size: 20px;">Feel free to
contact us, if you need any help with your Odoo integration or
addiontal features.</h5>
<div class="oe_slogan">
<a class="btn btn-primary btn-lg mt8" href="https://mukit.at"
target="_blank"> <i class="fa fa-globe"></i> Website
</a> <a class="btn btn-primary btn-lg mt8" href="mailto:sale@mukit.at">
<i class="fa fa-envelope"></i> Contact Us
</a> <a class="btn btn-primary btn-lg mt8"
href="https://github.com/muk-it" target="_blank"> <i
class="fa fa-github"></i> Issues
</a>
</div>
<img src="logo.png"
style="width: 200px; margin-bottom: 20px; display: block;"
class="mx-auto center-block">
</section>

BIN
muk_web_theme/static/description/preview.png

Before

Width: 1000  |  Height: 200  |  Size: 32 KiB

BIN
muk_web_theme/static/description/screenshot_mobile_form.png

After

Width: 1080  |  Height: 1920  |  Size: 222 KiB

BIN
muk_web_theme/static/description/screenshot_mobile_search.png

Before

Width: 1080  |  Height: 1920  |  Size: 74 KiB

23
muk_web_utils/static/libs/simplebar/simplebar.css → muk_web_theme/static/libs/simplebar/simplebar.css

@ -11,6 +11,29 @@
max-height: inherit; max-height: inherit;
} }
.simplebar-wrapper {
overflow: hidden;
width: inherit;
height: inherit;
max-width: inherit;
max-height: inherit;
}
.simplebar-mask {
direction: inherit;
position: absolute;
overflow: hidden;
padding: 0;
margin: 0;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: auto !important;
height: auto !important;
z-index: 0;
}
.simplebar-offset { .simplebar-offset {
direction: inherit !important; direction: inherit !important;
box-sizing: inherit !important; box-sizing: inherit !important;

2
muk_web_utils/static/libs/simplebar/simplebar.js → muk_web_theme/static/libs/simplebar/simplebar.js

@ -4365,6 +4365,8 @@
classNames: { classNames: {
content: 'simplebar-content', content: 'simplebar-content',
offset: 'simplebar-offset', offset: 'simplebar-offset',
mask: 'simplebar-mask',
wrapper: 'simplebar-wrapper',
placeholder: 'simplebar-placeholder', placeholder: 'simplebar-placeholder',
scrollbar: 'simplebar-scrollbar', scrollbar: 'simplebar-scrollbar',
track: 'simplebar-track', track: 'simplebar-track',

70
muk_web_theme/static/src/components/control_panel.js

@ -0,0 +1,70 @@
/**********************************************************************************
*
* Copyright (c) 2017-today MuK IT GmbH.
*
* This file is part of MuK Grid Snippets
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.ControlPanel', function (require) {
"use strict";
const ControlPanel = require('web.ControlPanel');
const config = require('web.config');
const { useState } = owl.hooks;
if (!config.device.isMobile) {
return;
}
ControlPanel.patch('muk_web_theme.ControlPanel', T => {
class ControlPanelPatch extends T {
constructor() {
super(...arguments);
this.state = useState({
showViewSwitcherButtons: false,
});
this.isMobile = true;
}
mounted() {
super.mounted();
this.onWindowClickEvent = this._onWindowClick.bind(this);
window.addEventListener('click', this.onWindowClickEvent);
}
willUnmount() {
super.willUnmount();
window.removeEventListener('click', this.onWindowClickEvent);
}
_onWindowClick(event) {
if (this.state.showViewSwitcherButtons && !event.target.closest('.o_cp_switch_buttons')) {
this.state.showViewSwitcherButtons = false;
}
}
_getCurrentViewIcon() {
const currentView = this.props.views.find((view) => {
return view.type === this.env.view.type
})
return currentView.icon;
}
}
return ControlPanelPatch;
});
});

65
muk_web_theme/static/src/components/control_panel.xml

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Grid Snippets
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<templates xml:space="preserve">
<t t-inherit="web.ControlPanel" t-inherit-mode="extension">
<xpath expr="//nav[hasclass('o_cp_switch_buttons')]" position="replace">
<nav
t-if="props.views.length gt 1"
class="btn-group o_cp_switch_buttons"
role="toolbar"
aria-label="View switcher"
t-att-class="{ show: state and state.showViewSwitcherButtons }"
>
<t t-if="isMobile">
<button
type="button"
class="btn btn-link btn-sm"
t-on-click="state.showViewSwitcherButtons = !state.showViewSwitcherButtons"
>
<span
class="fa fa-lg"
t-att-class="_getCurrentViewIcon()"
/>
</button>
<ul t-if="state.showViewSwitcherButtons"
t-att-class="{ show: state.showViewSwitcherButtons }"
class="dropdown-menu dropdown-menu-right"
>
<li t-foreach="props.views" t-as="view" t-key="view.type">
<t t-call="web.ViewSwitcherButton"/>
</li>
</ul>
</t>
<t t-else="">
<t t-foreach="props.views" t-as="view" t-key="view.type">
<t t-call="web.ViewSwitcherButton"/>
</t>
</t>
</nav>
</xpath>
</t>
</templates>

41
muk_web_theme/static/src/js/chrome/actions.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -21,30 +21,19 @@
**********************************************************************************/ **********************************************************************************/
odoo.define('muk_web_theme.ActionManager', function (require) { odoo.define('muk_web_theme.ActionManager', function (require) {
"use strict";
"use strict";
var rpc = require('web.rpc');
var session = require('web.session');
var ActionManager = require('web.ActionManager');
const ActionManager = require('web.ActionManager');
rpc.query({
model: 'res.users',
method: 'search_read',
args: [[['id', '=', session.uid]], ['chatter_position']]
}).then(function (pos) {
var position = pos[0]['chatter_position'];
var clsNames = 'o_action_manager mk_chatter_position_' + position;
ActionManager.include({
className: clsNames,
ActionManager.include({
_handleAction(action) {
return this._super(...arguments).then($.proxy(this, '_hideMenusByAction', action));
},
_hideMenusByAction(action) {
const unique_selection = '[data-action-id=' + action.id + ']';
$(_.str.sprintf('.o_menu_apps .dropdown:has(.dropdown-menu.show:has(%s)) > a', unique_selection)).dropdown('toggle');
$(_.str.sprintf('.o_menu_sections.show:has(%s)', unique_selection)).collapse('hide');
},
});
_handleAction: function (action) {
return this._super.apply(this, arguments).then($.proxy(this, '_hideMenusByAction', action));
},
_hideMenusByAction: function (action) {
var unique_selection = '[data-action-id=' + action.id + ']';
$(_.str.sprintf('.o_menu_apps .dropdown:has(.dropdown-menu.show:has(%s)) > a', unique_selection)).dropdown('toggle');
$(_.str.sprintf('.o_menu_sections.show:has(%s)', unique_selection)).collapse('hide');
},
})
});
})
});

44
muk_web_theme/static/src/js/chrome/apps.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,15 +23,11 @@
odoo.define('muk_web_theme.AppsMenu', function (require) { odoo.define('muk_web_theme.AppsMenu', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var config = require("web.config");
var session = require("web.session");
const core = require('web.core');
const session = require("web.session");
var AppsMenu = require("web.AppsMenu");
var MenuSearchMixin = require("muk_web_theme.MenuSearchMixin");
var _t = core._t;
var QWeb = core.qweb;
const AppsMenu = require("web.AppsMenu");
const MenuSearchMixin = require("muk_web_theme.MenuSearchMixin");
AppsMenu.include(_.extend({}, MenuSearchMixin, { AppsMenu.include(_.extend({}, MenuSearchMixin, {
events: _.extend({}, AppsMenu.prototype.events, { events: _.extend({}, AppsMenu.prototype.events, {
@ -41,9 +37,9 @@ AppsMenu.include(_.extend({}, MenuSearchMixin, {
"hidden.bs.dropdown": "_onMenuHidden", "hidden.bs.dropdown": "_onMenuHidden",
"hide.bs.dropdown": "_onMenuHide", "hide.bs.dropdown": "_onMenuHide",
}), }),
init: function (parent, menuData) {
this._super.apply(this, arguments);
for (var n in this._apps) {
init(parent, menuData) {
this._super(...arguments);
for (let n in this._apps) {
this._apps[n].web_icon_data = menuData.children[n].web_icon_data; this._apps[n].web_icon_data = menuData.children[n].web_icon_data;
} }
this._searchableMenus = _.reduce( this._searchableMenus = _.reduce(
@ -51,16 +47,16 @@ AppsMenu.include(_.extend({}, MenuSearchMixin, {
); );
this._search_def = $.Deferred(); this._search_def = $.Deferred();
}, },
start: function () {
start() {
this._setBackgroundImage(); this._setBackgroundImage();
this.$search_container = this.$(".mk_search_container"); this.$search_container = this.$(".mk_search_container");
this.$search_input = this.$(".mk_search_input input"); this.$search_input = this.$(".mk_search_input input");
this.$search_results = this.$(".mk_search_results"); this.$search_results = this.$(".mk_search_results");
return this._super.apply(this, arguments);
return this._super(...arguments);
}, },
_onSearchResultChosen: function (event) {
_onSearchResultChosen(event) {
event.preventDefault(); event.preventDefault();
var $result = $(event.currentTarget),
const $result = $(event.currentTarget),
text = $result.text().trim(), text = $result.text().trim(),
data = $result.data(), data = $result.data(),
suffix = ~text.indexOf("/") ? "/" : ""; suffix = ~text.indexOf("/") ? "/" : "";
@ -69,17 +65,15 @@ AppsMenu.include(_.extend({}, MenuSearchMixin, {
id: data.menuId, id: data.menuId,
previous_menu_id: data.parentId, previous_menu_id: data.parentId,
}); });
var app = _.find(this._apps, function (_app) {
return text.indexOf(_app.name + suffix) === 0;
});
const app = _.find(this._apps, (_app) => text.indexOf(_app.name + suffix) === 0);
core.bus.trigger("change_menu_section", app.menuID); core.bus.trigger("change_menu_section", app.menuID);
}, },
_onAppsMenuItemClicked: function (event) {
this._super.apply(this, arguments);
_onAppsMenuItemClicked(event) {
this._super(...arguments);
event.preventDefault(); event.preventDefault();
}, },
_setBackgroundImage: function () {
var url = session.url('/web/image', {
_setBackgroundImage() {
const url = session.url('/web/image', {
model: 'res.company', model: 'res.company',
id: session.company_id, id: session.company_id,
field: 'background_image', field: 'background_image',
@ -94,7 +88,7 @@ AppsMenu.include(_.extend({}, MenuSearchMixin, {
}); });
} }
}, },
_onMenuHide: function(event) {
_onMenuHide(event) {
return $('.oe_wait').length === 0 && !this.$('input').is(':focus'); return $('.oe_wait').length === 0 && !this.$('input').is(':focus');
}, },
})); }));

39
muk_web_theme/static/src/js/chrome/appsbar.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,45 +23,38 @@
odoo.define('muk_web_theme.AppsBar', function (require) { odoo.define('muk_web_theme.AppsBar', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var config = require("web.config");
const Widget = require('web.Widget');
var Widget = require('web.Widget');
var _t = core._t;
var QWeb = core.qweb;
var AppsBar = Widget.extend({
const AppsBar = Widget.extend({
events: _.extend({}, Widget.prototype.events, { events: _.extend({}, Widget.prototype.events, {
'click .nav-link': '_onAppsMenuItemClicked', 'click .nav-link': '_onAppsMenuItemClicked',
}), }),
template: "muk_web_theme.AppsBarMenu", template: "muk_web_theme.AppsBarMenu",
init: function (parent, menu) {
this._super.apply(this, arguments);
this._apps = _.map(menu.children, function (app) {
return {
init(parent, menu) {
this._super(...arguments);
this._apps = _.map(menu.children, (app) => ({
actionID: parseInt(app.action.split(',')[1]), actionID: parseInt(app.action.split(',')[1]),
web_icon_data: app.web_icon_data, web_icon_data: app.web_icon_data,
menuID: app.id, menuID: app.id,
name: app.name, name: app.name,
xmlID: app.xmlid, xmlID: app.xmlid,
};
});
})
);
}, },
getApps: function () {
getApps() {
return this._apps; return this._apps;
}, },
_openApp: function (app) {
_openApp(app) {
this.trigger_up('app_clicked', { this.trigger_up('app_clicked', {
action_id: app.actionID, action_id: app.actionID,
menu_id: app.menuID, menu_id: app.menuID,
}); });
}, },
_onAppsMenuItemClicked: function (ev) {
var $target = $(ev.currentTarget);
var actionID = $target.data('action-id');
var menuID = $target.data('menu-id');
var app = _.findWhere(this._apps, {
_onAppsMenuItemClicked(ev) {
const $target = $(ev.currentTarget);
const actionID = $target.data('action-id');
const menuID = $target.data('menu-id');
const app = _.findWhere(this._apps, {
actionID: actionID, actionID: actionID,
menuID: menuID menuID: menuID
}); });

56
muk_web_theme/static/src/js/chrome/menu.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,14 +23,10 @@
odoo.define('muk_web_theme.Menu', function (require) { odoo.define('muk_web_theme.Menu', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var config = require("web.config");
const config = require("web.config");
var Menu = require("web.Menu");
var AppsBar = require("muk_web_theme.AppsBar");
var _t = core._t;
var QWeb = core.qweb;
const Menu = require("web.Menu");
const AppsBar = require("muk_web_theme.AppsBar");
Menu.include({ Menu.include({
events: _.extend({}, Menu.prototype.events, { events: _.extend({}, Menu.prototype.events, {
@ -41,40 +37,42 @@ Menu.include({
}), }),
menusTemplate: config.device.isMobile ? menusTemplate: config.device.isMobile ?
'muk_web_theme.MobileMenu.sections' : Menu.prototype.menusTemplate, 'muk_web_theme.MobileMenu.sections' : Menu.prototype.menusTemplate,
start: function () {
var res = this._super.apply(this, arguments);
start() {
const res = this._super(...arguments);
this.$menu_toggle = this.$(".mk_menu_sections_toggle"); this.$menu_toggle = this.$(".mk_menu_sections_toggle");
this.$menu_apps_sidebar = this.$('.mk_apps_sidebar_panel'); this.$menu_apps_sidebar = this.$('.mk_apps_sidebar_panel');
this._appsBar = new AppsBar(this, this.menu_data); this._appsBar = new AppsBar(this, this.menu_data);
this._appsBar.appendTo(this.$menu_apps_sidebar);
this.$menu_apps_sidebar.renderScrollBar();
const appsBarProm = this._appsBar.appendTo(this.$menu_apps_sidebar);
appsBarProm.then(() => {
this.$menu_apps_sidebar.renderScrollBar();
});
if (config.device.isMobile) { if (config.device.isMobile) {
var menu_ids = _.keys(this.$menu_sections);
for (var i = 0; i < menu_ids.length; i++) {
var $section = this.$menu_sections[menu_ids[i]];
$section.on('click', 'a[data-menu]', this, function(ev) {
const menu_ids = _.keys(this.$menu_sections);
for (let i = 0; i < menu_ids.length; i++) {
const $section = this.$menu_sections[menu_ids[i]];
$section.on('click', 'a[data-menu]', this, (ev) => {
ev.stopPropagation(); ev.stopPropagation();
}); });
} }
} }
return res;
return Promise.all([
res, appsBarProm
]);
}, },
_hideMobileSubmenus: function () {
_hideMobileSubmenus() {
if (this.$menu_toggle.is(":visible") && $('.oe_wait').length === 0 && if (this.$menu_toggle.is(":visible") && $('.oe_wait').length === 0 &&
this.$section_placeholder.is(":visible")) { this.$section_placeholder.is(":visible")) {
this.$section_placeholder.collapse("hide"); this.$section_placeholder.collapse("hide");
} }
}, },
_updateMenuBrand: function () {
if (!config.device.isMobile) {
return this._super.apply(this, arguments);
}
_updateMenuBrand() {
return !config.device.isMobile ? this._super(...arguments) : null;
}, },
_onAppsMenuClick: function(event, checkedCanBeRemoved) {
var action_manager = this.getParent().action_manager;
var controller = action_manager.getCurrentController();
_onAppsMenuClick(event, checkedCanBeRemoved) {
const action_manager = this.getParent().action_manager;
const controller = action_manager.getCurrentController();
if (controller && !checkedCanBeRemoved) { if (controller && !checkedCanBeRemoved) {
controller.widget.canBeRemoved().then(function () {
controller.widget.canBeRemoved().then(() => {
$(event.currentTarget).trigger('click', [true]); $(event.currentTarget).trigger('click', [true]);
$(event.currentTarget).off('.bs.dropdown'); $(event.currentTarget).off('.bs.dropdown');
}); });
@ -82,10 +80,10 @@ Menu.include({
event.preventDefault(); event.preventDefault();
} }
}, },
_onMobileSectionClick: function (event) {
_onMobileSectionClick(event) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
var $section = $(event.currentTarget);
const $section = $(event.currentTarget);
if ($section.hasClass('show')) { if ($section.hasClass('show')) {
$section.removeClass('show'); $section.removeClass('show');
$section.find('.show').removeClass('show'); $section.find('.show').removeClass('show');

50
muk_web_theme/static/src/js/chrome/pager.js

@ -1,50 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.Pager', function (require) {
"use strict";
var core = require('web.core');
var config = require("web.config");
var Pager = require('web.Pager');
var _t = core._t;
var QWeb = core.qweb;
Pager.include({
_render: function () {
this._super.apply(this, arguments);
if (this.state.size !== 0 && config.device.isMobile) {
this.$value.html(Math.ceil(this.state.current_max / this.state.limit));
this.$limit.html(Math.ceil(this.state.size / this.state.limit));
}
},
_onEdit: function (event) {
if (!config.device.isMobile) {
this._super.apply(this, arguments);
}
event.stopPropagation();
},
});
});

50
muk_web_theme/static/src/js/chrome/sidebar.js

@ -1,50 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.Sidebar', function (require) {
"use strict";
var core = require('web.core');
var config = require("web.config");
var Sidebar = require('web.Sidebar');
var _t = core._t;
var QWeb = core.qweb;
Sidebar.include({
init: function () {
this._super.apply(this, arguments);
if (config.device.isMobile) {
_.each(this.sections, function(element) {
if(element.name === 'print') {
element.icon = 'fa fa-print';
}
if(element.name === 'other') {
element.icon = 'fa fa-cogs';
}
});
}
},
});
});

50
muk_web_theme/static/src/js/core/search.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,17 +23,15 @@
odoo.define('muk_web_theme.MenuSearchMixin', function (require) { odoo.define('muk_web_theme.MenuSearchMixin', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var config = require("web.config");
var session = require("web.session");
const core = require('web.core');
const config = require("web.config");
var _t = core._t;
var QWeb = core.qweb;
const QWeb = core.qweb;
var MenuSearchMixin = {
_findNames: function (memo, menu) {
const MenuSearchMixin = {
_findNames(memo, menu) {
if (menu.action) { if (menu.action) {
var key = menu.parent_id ? menu.parent_id[1] + "/" : "";
const key = menu.parent_id ? menu.parent_id[1] + "/" : "";
memo[key + menu.name] = menu; memo[key + menu.name] = menu;
} }
if (menu.children.length) { if (menu.children.length) {
@ -41,38 +39,38 @@ var MenuSearchMixin = {
} }
return memo; return memo;
}, },
_menuInfo: function (key) {
var original = this._searchableMenus[key];
_menuInfo(key) {
const original = this._searchableMenus[key];
return _.extend({ return _.extend({
action_id: parseInt(original.action.split(',')[1], 10), action_id: parseInt(original.action.split(',')[1], 10),
}, original); }, original);
}, },
_searchFocus: function () {
_searchFocus() {
if (!config.device.isMobile) { if (!config.device.isMobile) {
this.$search_input.focus(); this.$search_input.focus();
} else { } else {
this.$search_input.blur(); this.$search_input.blur();
} }
}, },
_searchReset: function () {
_searchReset() {
this.$search_container.removeClass("has-results"); this.$search_container.removeClass("has-results");
this.$search_results.empty(); this.$search_results.empty();
this.$search_input.val(""); this.$search_input.val("");
}, },
_searchMenusSchedule: function () {
_searchMenusSchedule() {
this._search_def.reject(); this._search_def.reject();
this._search_def = $.Deferred(); this._search_def = $.Deferred();
setTimeout(this._search_def.resolve.bind(this._search_def), 50); setTimeout(this._search_def.resolve.bind(this._search_def), 50);
this._search_def.then(this._searchMenus.bind(this)); this._search_def.then(this._searchMenus.bind(this));
}, },
_searchMenus: function () {
var query = this.$search_input.val();
_searchMenus() {
const query = this.$search_input.val();
if (query === "") { if (query === "") {
this.$search_container.removeClass("has-results"); this.$search_container.removeClass("has-results");
this.$search_results.empty(); this.$search_results.empty();
return; return;
} }
var results = fuzzy.filter(query, _.keys(this._searchableMenus), {
const results = fuzzy.filter(query, _.keys(this._searchableMenus), {
pre: "<b>", pre: "<b>",
post: "</b>", post: "</b>",
}); });
@ -82,15 +80,15 @@ var MenuSearchMixin = {
widget: this, widget: this,
})); }));
}, },
_onSearchResultsNavigate: function (event) {
_onSearchResultsNavigate(event) {
if (this.$search_results.html().trim() === "") { if (this.$search_results.html().trim() === "") {
this._searchMenusSchedule(); this._searchMenusSchedule();
return; return;
} }
var all = this.$search_results.find(".mk_menu_search_result");
var key = event.key || String.fromCharCode(event.which);
var pre_focused = all.filter(".active") || $(all[0]);
var offset = all.index(pre_focused);
const all = this.$search_results.find(".mk_menu_search_result");
const key = event.key || String.fromCharCode(event.which);
const pre_focused = all.filter(".active") || $(all[0]);
const offset = all.index(pre_focused);
if (key === "Tab") { if (key === "Tab") {
event.preventDefault(); event.preventDefault();
key = event.shiftKey ? "ArrowUp" : "ArrowDown"; key = event.shiftKey ? "ArrowUp" : "ArrowDown";
@ -114,7 +112,7 @@ var MenuSearchMixin = {
} else if (offset >= all.length) { } else if (offset >= all.length) {
offset -= all.length; offset -= all.length;
} }
var new_focused = $(all[offset]);
const new_focused = $(all[offset]);
pre_focused.removeClass("active"); pre_focused.removeClass("active");
new_focused.addClass("active"); new_focused.addClass("active");
this.$search_results.scrollTo(new_focused, { this.$search_results.scrollTo(new_focused, {
@ -123,10 +121,10 @@ var MenuSearchMixin = {
}, },
}); });
}, },
_onMenuShown: function(event) {
_onMenuShown(event) {
this._searchFocus(); this._searchFocus();
}, },
_onMenuHidden: function(event) {
_onMenuHidden(event) {
this._searchReset(); this._searchReset();
}, },
}; };

30
muk_web_theme/static/src/js/fields/relational.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,18 +23,14 @@
odoo.define('muk_web_theme.relational_fields', function (require) { odoo.define('muk_web_theme.relational_fields', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var config = require("web.config");
var fields = require('web.relational_fields');
var _t = core._t;
var QWeb = core.qweb;
const config = require("web.config");
const fields = require('web.relational_fields');
fields.FieldStatus.include({ fields.FieldStatus.include({
_setState: function () {
this._super.apply(this, arguments);
_setState() {
this._super(...arguments);
if (config.device.isMobile) { if (config.device.isMobile) {
_.map(this.status_information, function (value) {
_.map(this.status_information, (value) => {
value.fold = true; value.fold = true;
}); });
} }
@ -42,10 +38,10 @@ fields.FieldStatus.include({
}); });
fields.FieldOne2Many.include({ fields.FieldOne2Many.include({
_renderButtons: function () {
var result = this._super.apply(this, arguments);
_renderButtons() {
const result = this._super(...arguments);
if (config.device.isMobile && this.$buttons) { if (config.device.isMobile && this.$buttons) {
var $buttons = this.$buttons.find('.btn-secondary');
const $buttons = this.$buttons.find('.btn-secondary');
$buttons.addClass('btn-primary mk_mobile_add'); $buttons.addClass('btn-primary mk_mobile_add');
$buttons.removeClass('btn-secondary'); $buttons.removeClass('btn-secondary');
} }
@ -54,10 +50,10 @@ fields.FieldOne2Many.include({
}); });
fields.FieldMany2Many.include({ fields.FieldMany2Many.include({
_renderButtons: function () {
var result = this._super.apply(this, arguments);
_renderButtons() {
const result = this._super(...arguments);
if (config.device.isMobile && this.$buttons) { if (config.device.isMobile && this.$buttons) {
var $buttons = this.$buttons.find('.btn-secondary');
const $buttons = this.$buttons.find('.btn-secondary');
$buttons.addClass('btn-primary mk_mobile_add'); $buttons.addClass('btn-primary mk_mobile_add');
$buttons.removeClass('btn-secondary'); $buttons.removeClass('btn-secondary');
} }

4
muk_web_utils/static/src/js/libs/scrollbar.js → muk_web_theme/static/src/js/libs/scrollbar.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Web Utils
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

44
muk_web_theme/static/src/js/views/form_renderer.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,32 +23,28 @@
odoo.define('muk_web_theme.FormRenderer', function (require) { odoo.define('muk_web_theme.FormRenderer', function (require) {
"use strict"; "use strict";
var dom = require('web.dom');
var core = require('web.core');
var config = require("web.config");
const core = require('web.core');
const config = require("web.config");
var FormRenderer = require('web.FormRenderer');
var _t = core._t;
var QWeb = core.qweb;
const FormRenderer = require('web.FormRenderer');
FormRenderer.include({ FormRenderer.include({
_renderHeaderButtons: function() {
const $buttons = this._super.apply(this, arguments);
if (
!config.device.isMobile ||
!$buttons.is(":has(>:not(.o_invisible_modifier))")
) {
return $buttons;
}
_renderHeaderButtons() {
const $buttons = this._super(...arguments);
if (
!config.device.isMobile ||
!$buttons.is(":has(>:not(.o_invisible_modifier))")
) {
return $buttons;
}
$buttons.addClass("dropdown-menu");
const $dropdown = $(
core.qweb.render("muk_web_theme.MenuStatusbarButtons")
);
$buttons.addClass("dropdown-menu").appendTo($dropdown);
return $dropdown;
},
$buttons.addClass("dropdown-menu");
const $dropdown = $(
core.qweb.render("muk_web_theme.MenuStatusbarButtons")
);
$buttons.addClass("dropdown-menu").appendTo($dropdown);
return $dropdown;
},
}); });
}); });

23
muk_web_theme/static/src/js/views/form_view.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -23,19 +23,14 @@
odoo.define('muk_web_theme.FormView', function (require) { odoo.define('muk_web_theme.FormView', function (require) {
"use strict"; "use strict";
var dom = require('web.dom');
var core = require('web.core');
var config = require("web.config");
const config = require("web.config");
var FormView = require('web.FormView');
var QuickCreateFormView = require('web.QuickCreateFormView');
var _t = core._t;
var QWeb = core.qweb;
const FormView = require('web.FormView');
const QuickCreateFormView = require('web.QuickCreateFormView');
FormView.include({ FormView.include({
init: function () {
this._super.apply(this, arguments);
init() {
this._super(...arguments);
if (config.device.isMobile) { if (config.device.isMobile) {
this.controllerParams.disableAutofocus = true; this.controllerParams.disableAutofocus = true;
} }
@ -43,8 +38,8 @@ FormView.include({
}); });
QuickCreateFormView.include({ QuickCreateFormView.include({
init: function () {
this._super.apply(this, arguments);
init() {
this._super(...arguments);
if (config.device.isMobile) { if (config.device.isMobile) {
this.controllerParams.disableAutofocus = true; this.controllerParams.disableAutofocus = true;
} }

28
muk_web_utils/static/src/scss/binary.scss → muk_web_theme/static/src/js/views/kanban_column.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Web Utils
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -20,9 +20,23 @@
* *
**********************************************************************************/ **********************************************************************************/
.o_list_view .o_field_widget.o_field_binary_file {
height: 100%;
button.btn {
padding-top: 0.25rem;
}
odoo.define('muk_web_theme.KanbanColumn', function (require) {
"use strict";
const config = require('web.config');
const KanbanColumn = require('web.KanbanColumn');
if (!config.device.isMobile) {
return;
} }
KanbanColumn.include({
init() {
this._super(...arguments);
this.recordsDraggable = false;
this.canBeFolded = false;
},
});
});

34
muk_web_utils/static/src/js/fields/abstract.js → muk_web_theme/static/src/js/views/kanban_quick_create.js

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Web Utils
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -20,26 +20,24 @@
* *
**********************************************************************************/ **********************************************************************************/
odoo.define('muk_web_utils.abstract', function(require) {
odoo.define('muk_web_theme.kanban_column_quick_create', function (require) {
"use strict"; "use strict";
var core = require('web.core');
var session = require('web.session');
var utils = require('web.field_utils');
var fields = require('web.basic_fields');
var registry = require('web.field_registry');
const config = require('web.config');
var AbstractField = require('web.AbstractField');
const KanbanRenderer = require('web.kanban_column_quick_create');
var _t = core._t;
var QWeb = core.qweb;
AbstractField.include({
isFocusable: function () {
if(!!this.attrs.skip_focus){
return false;
}
return this._super.apply(this, arguments);
KanbanRenderer.include({
init() {
this._super(...arguments);
this.isMobile = config.device.isMobile;
},
_cancel() {
if (!config.device.isMobile) {
this._super(...arguments);
} else if (!this.folded) {
this.$input.val('');
}
}, },
}); });

271
muk_web_theme/static/src/js/views/kanban_renderer.js

@ -0,0 +1,271 @@
/**********************************************************************************
*
* Copyright (c) 2017-today MuK IT GmbH.
*
* This file is part of MuK Grid Snippets
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.KanbanRenderer', function (require) {
"use strict";
const config = require('web.config');
const core = require('web.core');
const KanbanRenderer = require('web.KanbanRenderer');
const _t = core._t;
const qweb = core.qweb;
if (!config.device.isMobile) {
return;
}
KanbanRenderer.include({
custom_events: _.extend({}, KanbanRenderer.prototype.custom_events || {}, {
quick_create_column_created: '_onColumnAdded',
}),
events: _.extend({}, KanbanRenderer.prototype.events, {
'click .o_kanban_mobile_tab': '_onMobileTabClicked',
'click .o_kanban_mobile_add_column': '_onMobileQuickCreateClicked',
}),
ANIMATE: true,
init() {
this._super.apply(this, arguments);
this.activeColumnIndex = 0;
this._scrollPosition = null;
},
on_attach_callback() {
if (this._scrollPosition && this.state.groupedBy.length && this.widgets.length) {
var $column = this.widgets[this.activeColumnIndex].$el;
$column.scrollLeft(this._scrollPosition.left);
$column.scrollTop(this._scrollPosition.top);
}
this._computeTabPosition();
this._super.apply(this, arguments);
},
on_detach_callback() {
if (this.state.groupedBy.length && this.widgets.length) {
var $column = this.widgets[this.activeColumnIndex].$el;
this._scrollPosition = {
left: $column.scrollLeft(),
top: $column.scrollTop(),
};
} else {
this._scrollPosition = null;
}
this._super.apply(this, arguments);
},
addQuickCreate() {
if(this._canCreateColumn() && !this.quickCreate.folded) {
this._onMobileQuickCreateClicked();
}
return this.widgets[this.activeColumnIndex].addQuickCreate();
},
updateColumn(localID) {
var index = _.findIndex(this.widgets, {db_id: localID});
var $column = this.widgets[index].$el;
var scrollTop = $column.scrollTop();
return this._super.apply(this, arguments)
.then(() => this._layoutUpdate(false))
.then(() => $column.scrollTop(scrollTop));
},
_canCreateColumn: function() {
return this.quickCreateEnabled && this.quickCreate && this.widgets.length;
},
_computeColumnPosition(animate) {
if (this.widgets.length) {
const rtl = _t.database.parameters.direction === 'rtl';
this.$('.o_kanban_group').show();
const $columnAfter = this._toNode(this.widgets.filter((widget, index) => index > this.activeColumnIndex));
const promiseAfter = this._updateColumnCss($columnAfter, rtl ? {right: '100%'} : {left: '100%'}, animate);
const $columnBefore = this._toNode(this.widgets.filter((widget, index) => index < this.activeColumnIndex));
const promiseBefore = this._updateColumnCss($columnBefore, rtl ? {right: '-100%'} : {left: '-100%'}, animate);
const $columnCurrent = this._toNode(this.widgets.filter((widget, index) => index === this.activeColumnIndex));
const promiseCurrent = this._updateColumnCss($columnCurrent, rtl ? {right: '0%'} : {left: '0%'}, animate);
promiseAfter
.then(promiseBefore)
.then(promiseCurrent)
.then(() => {
$columnAfter.hide();
$columnBefore.hide();
});
}
},
_computeCurrentColumn() {
if (this.widgets.length) {
var column = this.widgets[this.activeColumnIndex];
if (!column) {
return;
}
var columnID = column.id || column.db_id;
this.$('.o_kanban_mobile_tab.o_current, .o_kanban_group.o_current')
.removeClass('o_current');
this.$('.o_kanban_group[data-id="' + columnID + '"], ' +
'.o_kanban_mobile_tab[data-id="' + columnID + '"]')
.addClass('o_current');
}
},
_computeTabPosition() {
this._computeTabJustification();
this._computeTabScrollPosition();
},
_computeTabScrollPosition() {
if (this.widgets.length) {
var lastItemIndex = this.widgets.length - 1;
var moveToIndex = this.activeColumnIndex;
var scrollToLeft = 0;
for (var i = 0; i < moveToIndex; i++) {
var columnWidth = this._getTabWidth(this.widgets[i]);
if (moveToIndex !== lastItemIndex && i === moveToIndex - 1) {
var partialWidth = 0.75;
scrollToLeft += columnWidth * partialWidth;
} else {
scrollToLeft += columnWidth;
}
}
this.$('.o_kanban_mobile_tabs').scrollLeft(scrollToLeft);
}
},
_computeTabJustification() {
if (this.widgets.length) {
var self = this;
var widthChilds = this.widgets.reduce(function (total, column) {
return total + self._getTabWidth(column);
}, 0);
var $tabs = this.$('.o_kanban_mobile_tabs');
$tabs.toggleClass('justify-content-between', $tabs.outerWidth() >= widthChilds);
}
},
_enableSwipe() {
var self = this;
var step = _t.database.parameters.direction === 'rtl' ? -1 : 1;
this.$el.swipe({
excludedElements: ".o_kanban_mobile_tabs",
swipeLeft() {
var moveToIndex = self.activeColumnIndex + step;
if (moveToIndex < self.widgets.length) {
self._moveToGroup(moveToIndex, self.ANIMATE);
}
},
swipeRight() {
var moveToIndex = self.activeColumnIndex - step;
if (moveToIndex > -1) {
self._moveToGroup(moveToIndex, self.ANIMATE);
}
}
});
},
_getTabWidth (column) {
var columnID = column.id || column.db_id;
return this.$('.o_kanban_mobile_tab[data-id="' + columnID + '"]').outerWidth();
},
_layoutUpdate (animate) {
this._computeCurrentColumn();
this._computeTabPosition();
this._computeColumnPosition(animate);
},
_moveToGroup(moveToIndex, animate) {
if (moveToIndex < 0 || moveToIndex >= this.widgets.length) {
this._layoutUpdate(animate);
return Promise.resolve();
}
this.activeColumnIndex = moveToIndex;
var column = this.widgets[this.activeColumnIndex];
if (column.data.isOpen) {
this._layoutUpdate(animate);
} else {
this.trigger_up('column_toggle_fold', {
db_id: column.db_id,
onSuccess: () => this._layoutUpdate(animate)
});
}
this._enableSwipe();
return Promise.resolve();
},
_renderGrouped(fragment) {
var self = this;
var newFragment = document.createDocumentFragment();
this._super.apply(this, [newFragment]);
this.defs.push(Promise.all(this.defs).then(function () {
var data = [];
_.each(self.state.data, function (group) {
if (!group.value) {
group = _.extend({}, group, {value: _t('Undefined')});
data.unshift(group);
} else {
data.push(group);
}
});
var kanbanColumnContainer = document.createElement('div');
kanbanColumnContainer.classList.add('o_kanban_columns_content');
kanbanColumnContainer.appendChild(newFragment);
fragment.appendChild(kanbanColumnContainer);
$(qweb.render('KanbanView.MobileTabs', {
data: data,
quickCreateEnabled: self._canCreateColumn()
})).prependTo(fragment);
}));
},
_renderView() {
var self = this;
return this._super.apply(this, arguments).then(function () {
if (self.state.groupedBy.length) {
return self._moveToGroup(0);
} else {
if(self._canCreateColumn()) {
self._onMobileQuickCreateClicked();
}
return Promise.resolve();
}
});
},
_toNode(widgets) {
const selectorCss = widgets
.map(widget => '.o_kanban_group[data-id="' + (widget.id || widget.db_id) + '"]')
.join(', ');
return this.$(selectorCss);
},
_updateColumnCss($column, cssProperties, animate) {
if (animate) {
return new Promise(resolve => $column.animate(cssProperties, 'fast', resolve));
} else {
$column.css(cssProperties);
return Promise.resolve();
}
},
_onColumnAdded() {
this._computeTabPosition();
if(this._canCreateColumn() && !this.quickCreate.folded) {
this.quickCreate.toggleFold();
}
},
_onMobileQuickCreateClicked: function() {
this.$('.o_kanban_group').toggle();
this.quickCreate.toggleFold();
},
_onMobileTabClicked(event) {
if(this._canCreateColumn() && !this.quickCreate.folded) {
this.quickCreate.toggleFold();
}
this._moveToGroup($(event.currentTarget).index(), true);
},
_renderExampleBackground() {},
});
});

107
muk_web_theme/static/src/js/views/list_renderer.js

@ -1,107 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.ListRenderer', function (require) {
"use strict";
var dom = require('web.dom');
var core = require('web.core');
var config = require("web.config");
var ListRenderer = require('web.ListRenderer');
var _t = core._t;
var QWeb = core.qweb;
ListRenderer.include({
_range_history: [],
_render: function() {
var res = this._super.apply(this, arguments);
this.$table = this.$el.find('.o_list_view');
return res;
},
_getRangeSelection: function() {
var self = this;
var start = null, end = null;
this.$el.find('td.o_list_record_selector input').each(function (i, el) {
var id = $(el).closest('tr').data('id');
var checked = self._range_history.indexOf(id) !== -1;
if (checked && $(el).is(':checked')) {
if (start == null) {
start = i;
} else {
end = i;
}
}
});
var new_range = this._getSelectionByRange(start, end);
var current_selection = this.selection;
current_selection = _.uniq(current_selection.concat(new_range));
return current_selection;
},
_getSelectionByRange: function(start, end) {
var result = [];
this.$el.find('td.o_list_record_selector input').closest('tr').each(function (i, el) {
var record_id = $(el).data('id');
if (start != null && end != null && i >= start && i <= end) {
result.push(record_id);
} else if(start != null && end == null && start == i) {
result.push(record_id);
}
});
return result;
},
_pushRangeHistory: function(id) {
if (this._range_history.length === 2) {
this._range_history = [];
}
this._range_history.push(id);
},
_deselectTable: function() {
window.getSelection().removeAllRanges();
},
_onSelectRecord: function(event) {
var res = this._super.apply(this, arguments);
var element = $(event.currentTarget);
if (/firefox/i.test(navigator.userAgent) && event.shiftKey) {
element.find('input').prop('checked', !element.find('input').prop('checked'));
}
if (element.find('input').prop('checked')) {
this._pushRangeHistory(element.closest('tr').data('id'));
}
if (event.shiftKey) {
var selection = this._getRangeSelection();
var $rows = this.$el.find('td.o_list_record_selector input').closest('tr');
$rows.each(function () {
var record_id = $(this).data('id');
if (selection.indexOf(record_id) !== -1) {
$(this).find('td.o_list_record_selector input').prop('checked', true);
}
});
this._updateSelection();
this._deselectTable();
}
return res;
}
});
});

4
muk_web_theme/static/src/scss/apps.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/appsbar.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/colors.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

114
muk_web_theme/static/src/scss/control_panel.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -20,67 +20,70 @@
* *
**********************************************************************************/ **********************************************************************************/
@include media-breakpoint-down(sm) { @include media-breakpoint-down(sm) {
.o_control_panel { .o_control_panel {
padding-left: $o-horizontal-padding /2; padding-left: $o-horizontal-padding /2;
padding-right: $o-horizontal-padding /2; padding-right: $o-horizontal-padding /2;
.breadcrumb, .o_cp_left, .o_cp_right, .o_cp_searchview {
flex: 1 1 100%;
@include media-breakpoint-up(md) {
flex-basis: 50%;
.o_cp_top {
justify-content: space-between;
.o_cp_top_left {
max-width: 35%;
.breadcrumb {
overflow: hidden;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
}
} }
.o_cp_top_right {
min-height: 35px;
min-width: 65%;
flex-grow: 1;
}
} }
.breadcrumb {
max-width: 80%;
overflow: hidden;
display: block;
white-space: nowrap;
text-overflow: ellipsis;
}
.o_cp_searchview {
min-height: 35px;
&.o_searchview_quick {
width: 100%;
display: flex;
align-items: flex-start;
.o_searchview {
border: none;
display: flex;
flex: 1 1 auto;
align-items: center;
.o_searchview_input_container {
flex: 1 1 auto;
.o_cp_bottom {
justify-content: space-between;
.o_cp_bottom_left {
flex-grow: 1;
.o_cp_action_menus, .o_cp_buttons {
flex: 1 1 100%;
}
.o_cp_action_menus .o_dropdown .o_dropdown_toggler_btn {
.o_dropdown_title {
display: none;
} }
.o_enable_searchview {
margin-left: 0;
padding-left: 0;
&:before {
padding-right: 5px;
}
i:last-of-type{
display: none;
}
&::after{
display: inline-block;
width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
border-bottom: 0;
border-left: 0.3em solid transparent;
} }
} }
} }
}
.o_cp_left {
flex-basis: 50%;
white-space: nowrap;
.o_cp_buttons, .o_cp_sidebar {
flex: 1 1 100%;
}
}
.o_cp_right {
flex-basis: 10%;
}
.o_cp_pager {
white-space: nowrap;
.o_pager_counter {
max-width: 60px;
@include o-text-overflow;
.o_cp_bottom_right {
.o_cp_pager {
white-space: nowrap;
.o_pager_counter {
max-width: 60px;
@include o-text-overflow;
}
.o_pager_previous, .o_pager_next {
border: none;
}
}
.o_search_options {
display: none;
}
} }
.o_pager_previous, .o_pager_next {
border: none;
}
} }
.breadcrumb-item { .breadcrumb-item {
&:not(.active) { &:not(.active) {
@ -108,8 +111,8 @@
.o_cp_buttons .btn.d-block:not(.d-none) { .o_cp_buttons .btn.d-block:not(.d-none) {
display: inline-block !important; display: inline-block !important;
} }
.o_cp_switch_buttons.show {
.dropdown-menu {
.o_cp_switch_buttons {
&.show > .dropdown-menu {
display: flex; display: flex;
min-width: 0px; min-width: 0px;
flex-direction: row; flex-direction: row;
@ -124,4 +127,7 @@
} }
} }
} }
.o_controller_with_searchpanel .o_search_panel {
display: none;
}
} }

4
muk_web_theme/static/src/scss/fields.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/fonts.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

11
muk_web_theme/static/src/scss/form_view.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -61,10 +61,13 @@
white-space: nowrap; white-space: nowrap;
} }
} }
> .tab-content > .tab-pane > :first-child {
margin-top: 0;
}
} }
} }
@include media-breakpoint-down(sm) { @include media-breakpoint-down(sm) {
.o_form_sheet, .oe_chatter {
.o_form_sheet {
min-width: 100% !important; min-width: 100% !important;
max-width: 100% !important; max-width: 100% !important;
margin-top: 15px !important; margin-top: 15px !important;
@ -138,7 +141,7 @@
flex: 1 1 auto; flex: 1 1 auto;
overflow: auto; overflow: auto;
} }
> .o_chatter {
> .o_FormRenderer_chatterContainer {
flex: 1 1 auto; flex: 1 1 auto;
overflow: auto; overflow: auto;
min-width: $mk-chatter-min-width; min-width: $mk-chatter-min-width;

82
muk_web_theme/static/src/scss/kanban_view.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -20,5 +20,81 @@
* *
**********************************************************************************/ **********************************************************************************/
.o_kanban_view {
@include media-breakpoint-down(sm) {
.o_kanban_view.o_kanban_grouped {
display: block;
position: relative;
overflow-x: hidden;
.o_kanban_mobile_tabs_container {
position: sticky;
display: flex;
justify-content: space-between;
width: 100%;
top: 0;
z-index: 1;
background-color: #5E5E5E;
.o_kanban_mobile_add_column {
height: $o-kanban-mobile-tabs-height;
padding: 10px;
border-left: grey 1px solid;
color: white;
font-size: 14px;
}
.o_kanban_mobile_tabs {
position: relative;
display: flex;
width: 100%;
height: $o-kanban-mobile-tabs-height;
overflow-x: auto;
.o_kanban_mobile_tab {
height: $o-kanban-mobile-tabs-height;
padding: 10px 20px;
font-size: 14px;
color: white;
&.o_current {
font-weight: bold;
border-bottom: 3px solid $o-brand-primary;
}
.o_column_title {
white-space: nowrap;
text-transform: uppercase;
}
}
}
}
.o_kanban_columns_content {
position: relative;
}
&[class] .o_kanban_group:not(.o_column_folded) {
@include o-position-absolute($top: $o-kanban-mobile-tabs-height, $left: 0, $bottom: 0);
width: 100%;
padding: 0;
margin-left: 0;
border: none;
&.o_current {
position: inherit;
top: 0;
&.o_kanban_no_records {
min-height: $o-kanban-mobile-empty-height;
}
}
.o_kanban_header {
display: none;
}
.o_kanban_record, .o_kanban_quick_create {
border: none;
border-bottom: 1px solid lightgray;
padding: 10px 16px;
margin: 0;
}
}
}
.o_kanban_view .o_column_quick_create {
.o_quick_create_folded {
display: none !important;
}
.o_quick_create_unfolded{
width: 100%;
}
}
} }

4
muk_web_theme/static/src/scss/layout.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

59
muk_web_theme/static/src/scss/list_view.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -20,55 +20,40 @@
* *
**********************************************************************************/ **********************************************************************************/
.o_list_view.table {
overflow-x: hidden;
}
.o_list_view.table,
.o_list_view.table thead,
.o_list_view.table tfoot,
.o_list_view.table td,
.o_list_view.table th {
border: none;
}
.o_list_view.table thead {
background-color: white;
th.o_column_sortable:hover {
background-color: white;
.o_list_view {
table {
overflow-x: hidden;
} }
}
.table-striped > tbody > tr {
background-color: white;
&:nth-of-type(2n+1) {
background-color: gray('200');
table, thead, tfoot, td, th {
border: none !important;
}
thead {
background-color: white;
th.o_column_sortable:hover {
background-color: white;
}
}
tfoot {
color: white !important;
cursor: default;
font-weight: normal;
} }
&:hover {
background-color: gray('300');
}
} }
.o_list_view_grouped.table tbody tr {
.o_list_table_grouped.table tbody tr {
&:nth-of-type(2n+1) { &:nth-of-type(2n+1) {
background-color: white; background-color: white;
} }
&.o_group_header { &.o_group_header {
background-image: none; background-image: none;
background-color: gray('300');
box-shadow: inset 0 1px 0 gray('400');
background-color: gray('200');
box-shadow: inset 0 1px 0 gray('300');
} }
&:hover { &:hover {
background-color: gray('300');
background-color: gray('200');
} }
} }
.o_list_view tfoot {
color: white !important;
cursor: default;
font-weight: normal;
}
.o_content, .modal-content { .o_content, .modal-content {
> div > .table-responsive { > div > .table-responsive {
overflow-x: initial; overflow-x: initial;

4
muk_web_theme/static/src/scss/mixins.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/navbar.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/notification.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/search_view.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/settings.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/scss/variables.scss

@ -1,8 +1,8 @@
/********************************************************************************** /**********************************************************************************
* *
* Copyright (c) 2017-2019 MuK IT GmbH.
* Copyright (c) 2017-today MuK IT GmbH.
* *
* This file is part of MuK Backend Theme
* This file is part of MuK Grid Snippets
* (see https://mukit.at). * (see https://mukit.at).
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/xml/apps.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/xml/appsbar.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/xml/base.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/xml/navbar.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

4
muk_web_theme/static/src/xml/shortcuts.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

37
muk_web_theme/static/src/xml/sidebar.xml

@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Backend Theme
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<templates id="template" xml:space="preserve">
<t t-extend="Sidebar">
<t t-jquery="button" t-operation="replace">
<button t-if="section.name != 'buttons'" data-toggle="dropdown" aria-expanded="false"
t-attf-class="o_dropdown_toggler_btn btn btn-secondary dropdown-toggle #{section.icon}">
<t t-if="section.name == 'files'" t-raw="widget.items[section.name].length || ''"/>
<t t-if="!section.icon" t-esc="section.label"/>
</button>
</t>
</t>
</templates>

4
muk_web_theme/static/src/xml/views.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

15
muk_web_theme/template/assets.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -53,6 +53,7 @@
<template id="assets_backend" name="Backend Assets" inherit_id="web.assets_backend"> <template id="assets_backend" name="Backend Assets" inherit_id="web.assets_backend">
<xpath expr="//link[last()]" position="after"> <xpath expr="//link[last()]" position="after">
<link rel="stylesheet" type="text/css" href="/muk_web_theme/static/libs/simplebar/simplebar.css" />
<link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/layout.scss"/> <link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/layout.scss"/>
<link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/navbar.scss"/> <link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/navbar.scss"/>
<link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/apps.scss"/> <link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/apps.scss"/>
@ -67,16 +68,20 @@
<link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/settings.scss"/> <link rel="stylesheet" type="text/scss" href="/muk_web_theme/static/src/scss/settings.scss"/>
</xpath> </xpath>
<xpath expr="//script[last()]" position="after"> <xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/web/static/lib/jquery.touchSwipe/jquery.touchSwipe.js" />
<script type="text/javascript" src="/muk_web_theme/static/libs/simplebar/simplebar.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/libs/scrollbar.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/actions.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/actions.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/menu.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/menu.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/apps.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/apps.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/appsbar.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/appsbar.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/sidebar.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/chrome/pager.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/fields/relational.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/fields/relational.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/form_view.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/views/form_view.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/form_renderer.js" /> <script type="text/javascript" src="/muk_web_theme/static/src/js/views/form_renderer.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/list_renderer.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/kanban_column.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/kanban_renderer.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/js/views/kanban_quick_create.js" />
<script type="text/javascript" src="/muk_web_theme/static/src/components/control_panel.js" />
</xpath> </xpath>
</template> </template>

14
muk_web_theme/template/web.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -25,8 +25,16 @@
<odoo> <odoo>
<template id="webclient_bootstrap" name="Web Client" inherit_id="web.webclient_bootstrap"> <template id="webclient_bootstrap" name="Web Client" inherit_id="web.webclient_bootstrap">
<xpath expr="//t[@t-set='head']" position="after">
<t t-set="head_web_theme">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
</t>
<t t-set="head" t-value="head_web_theme + (head or '')"/>
</xpath>
<xpath expr="//t[@t-set='body_classname']" position="after"> <xpath expr="//t[@t-set='body_classname']" position="after">
<t t-set="body_classname" t-value="'o_web_client mk_sidebar_type_' + request.env.user.sidebar_type or 'large'"/>
<t t-set="body_sidebar_classname" t-value="'mk_sidebar_type_' + request.env.user.sidebar_type or 'small'"/>
<t t-set="body_chatter_classname" t-value="'mk_chatter_position_' + request.env.user.chatter_position or 'sided'"/>
<t t-set="body_classname" t-value="'o_web_client %s %s' % (body_sidebar_classname, body_chatter_classname)"/>
</xpath> </xpath>
</template> </template>

51
muk_web_theme/views/res_config_settings_view.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -131,53 +131,6 @@
</div> </div>
</div> </div>
</div> </div>
<h2 id="web_theme_extension_title">Backend Theme Extensions</h2>
<div class="row mt16 o_settings_container" name="web_theme_extension">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_muk_web_theme_mail"/>
</div>
<div class="o_setting_right_pane">
<label for="module_muk_web_theme_mail"/>
<div class="text-muted">
Optimizes the mail chatter for the theme
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_muk_web_theme_branding"/>
</div>
<div class="o_setting_right_pane">
<label for="module_muk_web_theme_branding"/>
<div class="text-muted">
Customize the theme according to your needs
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_muk_web_theme_website"/>
</div>
<div class="o_setting_right_pane">
<label for="module_muk_web_theme_website"/>
<div class="text-muted">
Add theme styled website navigation
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_muk_web_theme_mobile"/>
</div>
<div class="o_setting_right_pane">
<label for="module_muk_web_theme_mobile"/>
<div class="text-muted">
Allow Odoo to be used as a PWA app
</div>
</div>
</div>
</div>
</div> </div>
</field> </field>
</record> </record>

6
muk_web_theme/views/res_users.xml

@ -2,9 +2,9 @@
<!-- <!--
Copyright (c) 2017-2019 MuK IT GmbH.
Copyright (c) 2017-today MuK IT GmbH.
This file is part of MuK Backend Theme
This file is part of MuK Grid Snippets
(see https://mukit.at). (see https://mukit.at).
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -30,7 +30,7 @@
<field name="inherit_id" ref="base.view_users_form_simple_modif" /> <field name="inherit_id" ref="base.view_users_form_simple_modif" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//group[@name='preferences']" position="after"> <xpath expr="//group[@name='preferences']" position="after">
<group string="Theme Preferences" name="preference_theme">
<group name="preference_theme">
<group > <group >
<field name="sidebar_type" readonly="0"/> <field name="sidebar_type" readonly="0"/>
</group> </group>

165
muk_web_theme_mail/LICENSE

@ -1,165 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

114
muk_web_theme_mail/README.rst

@ -1,114 +0,0 @@
==============
MuK Theme Mail
==============
This module complements the Backend Theme module by customizing the chatter to
better integrate with the theme.
Installation
============
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
list by clicking on the "Update Apps List" link. Now install the module by
clicking on the install button.
Another way to install this module is via the package management for Python
(`PyPI <https://pypi.org/project/pip/>`_).
To install our modules using the package manager make sure
`odoo-autodiscover <https://pypi.org/project/odoo-autodiscover/>`_ is installed
correctly. Then open a console and install the module by entering the following
command:
``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
The module name consists of the Odoo version and the module name, where
underscores are replaced by a dash.
**Module:**
``odoo<version>-addon-<module_name>``
**Example:**
``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo11-addon-muk-utils``
Once the installation has been successfully completed, the app is already in the
correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the
debug mode and update the list by clicking on the "Update Apps List" link. Now
install the module by clicking on the install button.
The biggest advantage of this variant is that you can now also update the app
using the "pip" command. To do this, enter the following command in your console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo. The steps are the same as for the installation only the button has changed
from "Install" to "Upgrade".
You can also view available Apps directly in our `repository <https://nexus.mukit.at/#browse/browse:odoo>`_
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_.
For modules licensed under OPL-1, you will receive access data when you purchase
the module. If the modules were not purchased directly from
`MuK IT <https://www.mukit.at/>`_ please contact our support (support@mukit.at)
with a confirmation of purchase to receive the corresponding access data.
Upgrade
============
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server
and log on to your Odoo server. Select the Apps menu and upgrade the module by
clicking on the upgrade button.
If you installed the module using the "pip" command, you can also update the
module in the same way. Just type the following command into the console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo, just like you would normally.
Configuration
=============
No additional configuration is needed to use this module.
Usage
=============
After installing the module the chatter is automatically updated.
Credits
=======
Contributors
------------
* Mathias Markl <mathias.markl@mukit.at>
Images
------------
Some pictures are based on or inspired by:
* `Font Awesome <https://fontawesome.com>`_
* `Freepik <https://www.flaticon.com/authors/freepik>`_
Author & Maintainer
-------------------
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_.
MuK IT is an Austrian company specialized in customizing and extending Odoo.
We develop custom solutions for your individual needs to help you focus on
your strength and expertise to grow your business.
If you want to get in touch please contact us via mail
(sale@mukit.at) or visit our website (https://mukit.at).

21
muk_web_theme_mail/__init__.py

@ -1,21 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Backend Theme Mail
# (see https://mukit.at).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################

54
muk_web_theme_mail/__manifest__.py

@ -1,54 +0,0 @@
###################################################################################
#
# Copyright (c) 2017-2019 MuK IT GmbH.
#
# This file is part of MuK Backend Theme Mail
# (see https://mukit.at).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################
{
"name": "MuK Backend Theme Mail",
"summary": "Backend Theme Mail",
"version": "13.0.1.0.0",
'category': 'Extra Tools',
"license": "LGPL-3",
"author": "MuK IT",
"website": "http://www.mukit.at",
'live_test_url': 'https://mukit.at/r/SgN',
"contributors": [
"Mathias Markl <mathias.markl@mukit.at>",
],
"depends": [
"mail",
"muk_web_theme",
],
"data": [
"template/assets.xml",
],
"qweb": [
"static/src/xml/*.xml",
],
"images": [
'static/description/banner.png',
],
'external_dependencies': {
'python': [],
'bin': [],
},
'application': False,
'installable': True,
'auto_install': True,
}

9
muk_web_theme_mail/doc/changelog.rst

@ -1,9 +0,0 @@
`1.1.0`
-------
- Mobile Chatter
`1.0.0`
-------
- Init version

114
muk_web_theme_mail/doc/index.rst

@ -1,114 +0,0 @@
==============
MuK Theme Mail
==============
This module complements the Backend Theme module by customizing the chatter to
better integrate with the theme.
Installation
============
To install this module, you need to:
Download the module and add it to your Odoo addons folder. Afterward, log on to
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
list by clicking on the "Update Apps List" link. Now install the module by
clicking on the install button.
Another way to install this module is via the package management for Python
(`PyPI <https://pypi.org/project/pip/>`_).
To install our modules using the package manager make sure
`odoo-autodiscover <https://pypi.org/project/odoo-autodiscover/>`_ is installed
correctly. Then open a console and install the module by entering the following
command:
``pip install --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
The module name consists of the Odoo version and the module name, where
underscores are replaced by a dash.
**Module:**
``odoo<version>-addon-<module_name>``
**Example:**
``sudo -H pip3 install --extra-index-url https://nexus.mukit.at/repository/odoo/simple odoo11-addon-muk-utils``
Once the installation has been successfully completed, the app is already in the
correct folder. Log on to your Odoo server and go to the Apps menu. Trigger the
debug mode and update the list by clicking on the "Update Apps List" link. Now
install the module by clicking on the install button.
The biggest advantage of this variant is that you can now also update the app
using the "pip" command. To do this, enter the following command in your console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo. The steps are the same as for the installation only the button has changed
from "Install" to "Upgrade".
You can also view available Apps directly in our `repository <https://nexus.mukit.at/#browse/browse:odoo>`_
and find a more detailed installation guide on our `website <https://mukit.at/page/open-source>`_.
For modules licensed under OPL-1, you will receive access data when you purchase
the module. If the modules were not purchased directly from
`MuK IT <https://www.mukit.at/>`_ please contact our support (support@mukit.at)
with a confirmation of purchase to receive the corresponding access data.
Upgrade
============
To upgrade this module, you need to:
Download the module and add it to your Odoo addons folder. Restart the server
and log on to your Odoo server. Select the Apps menu and upgrade the module by
clicking on the upgrade button.
If you installed the module using the "pip" command, you can also update the
module in the same way. Just type the following command into the console:
``pip install --upgrade --extra-index-url https://nexus.mukit.at/repository/odoo/simple <module>``
When the process is finished, restart your server and update the application in
Odoo, just like you would normally.
Configuration
=============
No additional configuration is needed to use this module.
Usage
=============
After installing the module the chatter is automatically updated.
Credits
=======
Contributors
------------
* Mathias Markl <mathias.markl@mukit.at>
Images
------------
Some pictures are based on or inspired by:
* `Font Awesome <https://fontawesome.com>`_
* `Freepik <https://www.flaticon.com/authors/freepik>`_
Author & Maintainer
-------------------
This module is maintained by the `MuK IT GmbH <https://www.mukit.at/>`_.
MuK IT is an Austrian company specialized in customizing and extending Odoo.
We develop custom solutions for your individual needs to help you focus on
your strength and expertise to grow your business.
If you want to get in touch please contact us via mail
(sale@mukit.at) or visit our website (https://mukit.at).

16
muk_web_theme_mail/i18n/de.po

@ -1,16 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190310\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-11 09:22+0000\n"
"PO-Revision-Date: 2019-03-11 09:22+0000\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"

16
muk_web_theme_mail/i18n/es.po

@ -1,16 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190310\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-11 09:22+0000\n"
"PO-Revision-Date: 2019-03-11 09:22+0000\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"

16
muk_web_theme_mail/i18n/fr.po

@ -1,16 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190310\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-11 09:22+0000\n"
"PO-Revision-Date: 2019-03-11 09:22+0000\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"

16
muk_web_theme_mail/i18n/muk_web_theme_mail.pot

@ -1,16 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190310\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-11 09:22+0000\n"
"PO-Revision-Date: 2019-03-11 09:22+0000\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"

16
muk_web_theme_mail/i18n/nl.po

@ -1,16 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0-20190310\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-11 09:22+0000\n"
"PO-Revision-Date: 2019-03-11 09:22+0000\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"

BIN
muk_web_theme_mail/static/description/banner.png

Before

Width: 880  |  Height: 440  |  Size: 47 KiB

BIN
muk_web_theme_mail/static/description/icon.png

Before

Width: 250  |  Height: 250  |  Size: 13 KiB

1
muk_web_theme_mail/static/description/icon.svg
File diff suppressed because it is too large
View File

133
muk_web_theme_mail/static/description/index.html

@ -1,133 +0,0 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">MuK Backend Theme Mail</h2>
<h3 class="oe_slogan">Community Backend Theme Mail Extension</h3>
<h4 class="oe_slogan" style="font-size: 23px;">MuK IT GmbH -
www.mukit.at</h4>
<div class="oe_demo oe_screenshot"
style="max-width: 84%; margin: 16px 8%;">
<img src="screenshot.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="text-justify" style="max-width: 84%; margin: 16px 8%;">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32">
This module complements the <a
href="https://www.odoo.com/apps/themes/12.0/muk_web_theme/"
target="_blank">Backend Theme</a> module by customizing the chatter
to better integrate with the theme. In addition, this module offers
a better user experience for the chatter on mobile devices.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Our Services</h3>
<div
style="display: flex; padding-top: 20px; justify-content: space-between;">
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/MQ5" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_implementation.png"
style="width: 100%; border-radius: 100%;">
</div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
Odoo <br>Implementation
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/u7c" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_integration.png"
style="width: 100%; border-radius: 100%;">
</div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
Odoo <br>Integration
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://mukit.at/r/xDJ" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_customization.png"
style="width: 100%; border-radius: 100%;">
</div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
Odoo <br>Customization
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href=" https://mukit.at/r/J3A" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_development.png"
style="width: 100%; border-radius: 100%;">
</div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
Odoo <br>Development
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href=" https://mukit.at/r/R1v" target="_blank">
<div
style="width: 75px; height: 75px; border-radius: 100%; margin: auto;">
<img src="service_support.png"
style="width: 100%; border-radius: 100%;">
</div>
<h3 class="oe_slogan"
style="text-align: center; font-size: 14px; width: 100%; margin: 0; margin-top: 14px; color: #000 !important; margin-top: 5px; opacity: 1 !important; line-height: 17px;">
Odoo <br>Support
</h3>
</a>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 32px 0;">
<div class="oe_row oe_spaced" style="margin: auto;">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://mukit.at/r/SgN" target="_blank"> <img
src="preview.png">
</a>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h3 class="oe_slogan">Help and Support</h3>
<h5 class="oe_slogan" style="font-size: 20px;">Feel free to
contact us, if you need any help with your Odoo integration or
addiontal features.</h5>
<h5 class="oe_slogan" style="font-size: 20px;">You will get 30
Days free support incase of any bugs or issues (Except data recovery
or migration).</h5>
<div class="oe_slogan">
<a class="btn btn-primary btn-lg mt8" href="https://mukit.at"
target="_blank"> <i class="fa fa-globe"></i> Website
</a> <a class="btn btn-primary btn-lg mt8" href="mailto:sale@mukit.at">
<i class="fa fa-envelope"></i> Contact Us
</a> <a class="btn btn-primary btn-lg mt8" href="mailto:support@mukit.at">
<i class="fa fa-life-ring"></i> Support
</a>
</div>
<img src="logo.png"
style="width: 200px; margin-bottom: 20px; display: block;"
class="mx-auto center-block">
</section>

BIN
muk_web_theme_mail/static/description/logo.png

Before

Width: 500  |  Height: 500  |  Size: 37 KiB

BIN
muk_web_theme_mail/static/description/preview.png

Before

Width: 1000  |  Height: 200  |  Size: 32 KiB

BIN
muk_web_theme_mail/static/description/screenshot.png

Before

Width: 1600  |  Height: 900  |  Size: 271 KiB

BIN
muk_web_theme_mail/static/description/service_customization.png

Before

Width: 250  |  Height: 250  |  Size: 27 KiB

BIN
muk_web_theme_mail/static/description/service_development.png

Before

Width: 250  |  Height: 250  |  Size: 28 KiB

BIN
muk_web_theme_mail/static/description/service_implementation.png

Before

Width: 250  |  Height: 250  |  Size: 26 KiB

BIN
muk_web_theme_mail/static/description/service_integration.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

BIN
muk_web_theme_mail/static/description/service_support.png

Before

Width: 250  |  Height: 250  |  Size: 24 KiB

45
muk_web_theme_mail/static/src/js/chatter.js

@ -1,45 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme Mail
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme_mail.Chatter', function (require) {
"use strict";
var core = require('web.core');
var config = require("web.config");
var session = require("web.session");
var Chatter = require('mail.Chatter');
var _t = core._t;
var QWeb = core.qweb;
Chatter.include({
_openComposer: function (options) {
if (this._composer && options.isLog === this._composer.options.isLog && this._composer.$el.is(':visible')) {
this._closeComposer(false);
} else {
this._super.apply(this, arguments);
}
}
});
});

211
muk_web_theme_mail/static/src/js/discuss.js

@ -1,211 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme Mail
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme_mail.Discuss', function (require) {
"use strict";
const config = require("web.config");
const core = require("web.core");
const Discuss = require("mail.Discuss");
const QWeb = core.qweb;
if (!config.device.isMobile) {
return;
}
Discuss.include({
contentTemplate: "mail.discuss_mobile",
events: Object.assign({}, Discuss.prototype.events, {
"click .o_mail_mobile_tab": "_onClickMobileTab",
"click .o_mailbox_inbox_item": "_onClickMobileMailboxItem",
"click .o_mail_preview": "_onClickMobileMailPreview",
}),
init: function() {
this._super.apply(this, arguments);
this._currentState = this._defaultThreadID;
},
start: function() {
this._$mainContent = this.$(".o_mail_discuss_content");
return this._super
.apply(this, arguments)
.then(this._updateControlPanel.bind(this));
},
on_attach_callback: function() {
if (this._thread && this._isInInboxTab()) {
this._threadWidget.scrollToPosition(
this._threadsScrolltop[this._thread.getID()]
);
}
},
on_detach_callback: function() {
if (this._isInInboxTab()) {
this._threadsScrolltop[
this._thread.getID()
] = this._threadWidget.getScrolltop();
}
},
_isInInboxTab: function() {
return _.contains(["mailbox_inbox", "mailbox_starred"], this._currentState);
},
_renderButtons: function() {
this._super.apply(this, arguments);
_.each(["dm_chat", "multi_user_channel"], type => {
const selector = ".o_mail_discuss_button_" + type;
this.$buttons.on("click", selector, this._onAddThread.bind(this));
});
},
_restoreThreadState: function() {
if (this._isInInboxTab()) {
this._super.apply(this, arguments);
}
},
_selectMessage: function() {
this._super.apply(this, arguments);
this.$(".o_mail_mobile_tabs").addClass("o_hidden");
},
_setThread: function(threadID) {
const thread = this.call("mail_service", "getThread", threadID);
this._thread = thread;
if (thread.getType() !== "mailbox") {
this.call("mail_service", "openThreadWindow", threadID);
return Promise.resolve();
}
return this._super.apply(this, arguments);
},
_storeThreadState: function() {
if (this._thread && this._isInInboxTab()) {
this._super.apply(this, arguments);
}
},
_unselectMessage: function() {
this._super.apply(this, arguments);
this.$(".o_mail_mobile_tabs").removeClass("o_hidden");
},
_updateThreads: function() {
return this._updateContent(this._currentState);
},
_updateContent: function(type) {
const inMailbox = type === "mailbox_inbox" || type === "mailbox_starred";
if (!inMailbox && this._isInInboxTab()) {
this._storeThreadState();
}
const previouslyInInbox = this._isInInboxTab();
this._currentState = type;
let def = false;
if (inMailbox) {
def = this._fetchAndRenderThread();
} else {
const allChannels = this.call("mail_service", "getChannels");
const channels = _.filter(allChannels, function(channel) {
return channel.getType() === type;
});
def = this.call("mail_service", "getChannelPreviews", channels);
}
return def.then(previews => {
if (inMailbox) {
if (!previouslyInInbox) {
this.$(".o_mail_discuss_tab_pane").remove();
this._$mainContent.append(this._threadWidget.$el);
this._$mainContent.append(this._extendedComposer.$el);
}
this._restoreThreadState();
} else {
this._threadWidget.$el.detach();
this._extendedComposer.$el.detach();
const $content = $(
QWeb.render("mail.discuss.MobileTabPane", {
previews: previews,
type: type,
})
);
this._prepareAddThreadInput(
$content.find(".o_mail_add_thread input"),
type
);
this._$mainContent.html($content);
}
this.$buttons
.find("button")
.removeClass("d-block")
.addClass("d-none");
this.$buttons
.find(".o_mail_discuss_button_" + type)
.removeClass("d-none")
.addClass("d-block");
this.$buttons
.find(".o_mail_discuss_button_mark_all_read")
.toggleClass("d-none", type !== "mailbox_inbox")
.toggleClass("d-block", type === "mailbox_inbox");
this.$buttons
.find(".o_mail_discuss_button_unstar_all")
.toggleClass("d-none", type !== "mailbox_starred")
.toggleClass("d-block", type === "mailbox_starred");
if (inMailbox) {
this.$(".o_mail_discuss_mobile_mailboxes_buttons").removeClass(
"o_hidden"
);
this.$(".o_mailbox_inbox_item")
.removeClass("btn-primary")
.addClass("btn-secondary");
this.$(".o_mailbox_inbox_item[data-type=" + type + "]")
.removeClass("btn-secondary")
.addClass("btn-primary");
} else {
this.$(".o_mail_discuss_mobile_mailboxes_buttons").addClass(
"o_hidden"
);
}
this.$(".o_mail_mobile_tab").removeClass("active");
const type_n = type === "mailbox_starred" ? "mailbox_inbox" : type;
this.$(".o_mail_mobile_tab[data-type=" + type_n + "]").addClass(
"active"
);
});
},
_onAddThread: function() {
this.$(".o_mail_add_thread")
.show()
.find("input")
.focus();
},
_onClickMobileMailboxItem: function(ev) {
const mailboxID = $(ev.currentTarget).data("type");
this._setThread(mailboxID);
this._updateContent(this._thread.getID());
},
_onClickMobileTab: function(ev) {
const type = $(ev.currentTarget).data("type");
if (type === "mailbox") {
const inbox = this.call("mail_service", "getMailbox", "inbox");
this._setThread(inbox);
}
this._updateContent(type);
},
_onClickMobileMailPreview: function(ev) {
const threadID = $(ev.currentTarget).data("preview-id");
this.call("mail_service", "openThreadWindow", threadID);
},
});
});

42
muk_web_theme_mail/static/src/js/keyboard.js

@ -1,42 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme Mail
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
odoo.define('muk_web_theme.KeyboardNavigationMixin', function (require) {
"use strict";
var core = require('web.core');
var config = require("web.config");
var session = require("web.session");
var AbstractWebClient = require('web.AbstractWebClient');
var _t = core._t;
var QWeb = core.qweb;
AbstractWebClient.include({
_getAllUsedAccessKeys: function () {
return _.union(this._super.apply(this, arguments), ['M', 'T']);
},
});
});

110
muk_web_theme_mail/static/src/scss/chatter.scss

@ -1,110 +0,0 @@
/**********************************************************************************
*
* Copyright (c) 2017-2019 MuK IT GmbH.
*
* This file is part of MuK Backend Theme Mail
* (see https://mukit.at).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
**********************************************************************************/
.o_form_view {
@include media-breakpoint-down(sm) {
.o_chatter {
.o_thread_composer {
padding-left: $o-mail-thread-avatar-size * 0.5;
.o_chatter_avatar {
display: none;
}
}
.o_chatter_topbar {
height: auto;
flex-wrap: wrap-reverse;
margin-top: $grid-gutter-width* 0.25;
> .o_topbar_right_area {
max-width: 100%;
min-width: 100%;
flex-basis: 100%;
display: flex;
flex: 1 0 auto;
flex-wrap: wrap;
justify-content: space-between;
border-bottom: 1px solid gray('300');
.o_followers {
display: initial !important;
margin-bottom: 0;
}
}
> .o_active {
border-top: none;
}
.o_chatter_button_attachment {
margin-right: 5px;
}
}
}
}
}
.mk_chatter_position_sided {
@include media-breakpoint-up(xxl, $o-extra-grid-breakpoints) {
.o_form_view:not(.o_form_nosheet) > .o_chatter {
.o_chatter_topbar {
top: -1px;
z-index: 2;
height: auto;
position: sticky;
flex-wrap: wrap-reverse;
background-color: $o-view-background-color;
margin-top: $grid-gutter-width* 0.25;
> .o_topbar_right_area {
max-width: 100%;
min-width: 100%;
flex-basis: 100%;
display: flex;
flex: 1 0 auto;
flex-wrap: wrap;
justify-content: space-between;
border-bottom: 1px solid gray('300');
.o_followers {
margin-bottom: 0;
min-width: 100px;
}
}
> .o_active {
border-top: none;
}
> .btn-link {
border-top: none;
border-bottom: none;
}
.o_chatter_button_attachment {
margin-right: 5px;
}
}
.o_thread_composer {
position: sticky;
border: 1px solid gray('300');
background-color: $o-view-background-color;
z-index: 1;
top: 68px;
.o_composer_mention_dropdown > .dropdown-menu.show {
top: 100%;
bottom: auto;
}
}
}
}
}

33
muk_web_theme_mail/static/src/xml/discuss.xml

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Backend Theme Mail
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<templates id="template" xml:space="preserve">
<t t-extend="mail.discuss.ControlButtons">
<t t-jquery=".o_mail_discuss_button_multi_user_channel" t-operation="attributes">
<attribute name="class">btn btn-secondary o_mail_discuss_button_multi_user_channel d-md-block d-none</attribute>
</t>
</t>
</templates>

50
muk_web_theme_mail/static/src/xml/shortcuts.xml

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Backend Theme Mail
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<templates id="template" xml:space="preserve">
<t t-extend="UserMenu.shortcuts">
<t t-jquery="tbody" t-operation="append">
<tr>
<td align="left">Open the activities</td>
<td>
<span class="o_key">Alt</span> + <span class="o_key">t</span>
</td>
<td>
<span class="o_key">Control</span> + <span class="o_key">Alt</span> + <span class="o_key">t</span>
</td>
</tr>
<tr>
<td align="left">Open the messages</td>
<td>
<span class="o_key">Alt</span> + <span class="o_key">m</span>
</td>
<td>
<span class="o_key">Control</span> + <span class="o_key">Alt</span> + <span class="o_key">m</span>
</td>
</tr>
</t>
</t>
</templates>

43
muk_web_theme_mail/static/src/xml/systray.xml

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Backend Theme Mail
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<templates id="template" xml:space="preserve">
<t t-extend="mail.systray.MessagingMenu">
<t t-jquery="a.dropdown-toggle" t-operation="replace">
<a class="dropdown-toggle o-no-caret" data-toggle="dropdown" data-display="static" aria-expanded="false" title="Conversations" href="#" role="button" accesskey="m">
<i class="fa fa-comments" role="img" aria-label="Messages"/> <span class="o_notification_counter badge badge-pill"/>
</a>
</t>
</t>
<t t-extend="mail.systray.ActivityMenu">
<t t-jquery="a.dropdown-toggle" t-operation="replace">
<a class="dropdown-toggle o-no-caret" data-toggle="dropdown" data-display="static" aria-expanded="false" title="Activities" href="#" role="button" accesskey="t">
<i class="fa fa-clock-o" role="img" aria-label="Activities"/> <span class="o_notification_counter badge badge-pill"/>
</a>
</t>
</t>
</templates>

38
muk_web_theme_mail/template/assets.xml

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017-2019 MuK IT GmbH.
This file is part of MuK Backend Theme Mail
(see https://mukit.at).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<odoo>
<template id="assets_backend" name="Backend Assets" inherit_id="web.assets_backend">
<xpath expr="//link[last()]" position="after">
<link rel="stylesheet" type="text/scss" href="/muk_web_theme_mail/static/src/scss/chatter.scss"/>
</xpath>
<xpath expr="//script[last()]" position="after">
<script type="text/javascript" src="/muk_web_theme_mail/static/src/js/keyboard.js" />
<script type="text/javascript" src="/muk_web_theme_mail/static/src/js/chatter.js" />
<script type="text/javascript" src="/muk_web_theme_mail/static/src/js/discuss.js" />
</xpath>
</template>
</odoo>

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

Loading…
Cancel
Save