Browse Source

Mar 1 : [ADD] Initial Commit 'multicolor_backend_theme'

pull/254/head
AjmalCybro 2 years ago
parent
commit
d2ebe96094
  1. 44
      multicolor_backend_theme/README.md
  2. 24
      multicolor_backend_theme/__init__.py
  3. 78
      multicolor_backend_theme/__manifest__.py
  4. 23
      multicolor_backend_theme/controllers/__init__.py
  5. 39
      multicolor_backend_theme/controllers/main.py
  6. 28
      multicolor_backend_theme/data/theme_data.xml
  7. 6
      multicolor_backend_theme/doc/RELEASE_NOTES.md
  8. 22
      multicolor_backend_theme/models/__init__.py
  9. 121
      multicolor_backend_theme/models/theme_config.py
  10. 2
      multicolor_backend_theme/security/ir.model.access.csv
  11. BIN
      multicolor_backend_theme/static/description/assets/all_screens.png
  12. BIN
      multicolor_backend_theme/static/description/assets/banner.jpg
  13. BIN
      multicolor_backend_theme/static/description/assets/hero.gif
  14. BIN
      multicolor_backend_theme/static/description/assets/hero1.gif
  15. BIN
      multicolor_backend_theme/static/description/assets/icon.png
  16. BIN
      multicolor_backend_theme/static/description/assets/icons/._.DS_Store
  17. BIN
      multicolor_backend_theme/static/description/assets/icons/._cogs.png
  18. BIN
      multicolor_backend_theme/static/description/assets/icons/._consultation.png
  19. BIN
      multicolor_backend_theme/static/description/assets/icons/._ecom-black.png
  20. BIN
      multicolor_backend_theme/static/description/assets/icons/._education-black.png
  21. BIN
      multicolor_backend_theme/static/description/assets/icons/._hotel-black.png
  22. BIN
      multicolor_backend_theme/static/description/assets/icons/._license.png
  23. BIN
      multicolor_backend_theme/static/description/assets/icons/._lifebuoy.png
  24. BIN
      multicolor_backend_theme/static/description/assets/icons/._manufacturing-black.png
  25. BIN
      multicolor_backend_theme/static/description/assets/icons/._pos-black.png
  26. BIN
      multicolor_backend_theme/static/description/assets/icons/._puzzle.png
  27. BIN
      multicolor_backend_theme/static/description/assets/icons/._restaurant-black.png
  28. BIN
      multicolor_backend_theme/static/description/assets/icons/._service-black.png
  29. BIN
      multicolor_backend_theme/static/description/assets/icons/._trading-black.png
  30. BIN
      multicolor_backend_theme/static/description/assets/icons/._training.png
  31. BIN
      multicolor_backend_theme/static/description/assets/icons/._update.png
  32. BIN
      multicolor_backend_theme/static/description/assets/icons/._user.png
  33. BIN
      multicolor_backend_theme/static/description/assets/icons/._wrench.png
  34. BIN
      multicolor_backend_theme/static/description/assets/icons/chevron.png
  35. BIN
      multicolor_backend_theme/static/description/assets/icons/cogs.png
  36. BIN
      multicolor_backend_theme/static/description/assets/icons/consultation.png
  37. BIN
      multicolor_backend_theme/static/description/assets/icons/design.png
  38. BIN
      multicolor_backend_theme/static/description/assets/icons/ecom-black.png
  39. BIN
      multicolor_backend_theme/static/description/assets/icons/education-black.png
  40. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/._lifebuoy.png
  41. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png
  42. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png
  43. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png
  44. BIN
      multicolor_backend_theme/static/description/assets/icons/hotel-black.png
  45. BIN
      multicolor_backend_theme/static/description/assets/icons/license.png
  46. BIN
      multicolor_backend_theme/static/description/assets/icons/lifebuoy.png
  47. BIN
      multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png
  48. BIN
      multicolor_backend_theme/static/description/assets/icons/pos-black.png
  49. BIN
      multicolor_backend_theme/static/description/assets/icons/puzzle.png
  50. BIN
      multicolor_backend_theme/static/description/assets/icons/quality.png
  51. BIN
      multicolor_backend_theme/static/description/assets/icons/responsive.png
  52. BIN
      multicolor_backend_theme/static/description/assets/icons/restaurant-black.png
  53. BIN
      multicolor_backend_theme/static/description/assets/icons/service-black.png
  54. BIN
      multicolor_backend_theme/static/description/assets/icons/trading-black.png
  55. BIN
      multicolor_backend_theme/static/description/assets/icons/training.png
  56. BIN
      multicolor_backend_theme/static/description/assets/icons/update.png
  57. BIN
      multicolor_backend_theme/static/description/assets/icons/user.png
  58. BIN
      multicolor_backend_theme/static/description/assets/icons/wrench.png
  59. BIN
      multicolor_backend_theme/static/description/assets/screenshots/advance_search.png
  60. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_1.png
  61. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_2.png
  62. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_3.png
  63. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_4.png
  64. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_5.png
  65. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_6.png
  66. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_7.png
  67. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chameleon_8.png
  68. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chat_box.png
  69. BIN
      multicolor_backend_theme/static/description/assets/screenshots/color_picker.png
  70. BIN
      multicolor_backend_theme/static/description/assets/screenshots/control_panel.png
  71. BIN
      multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png
  72. BIN
      multicolor_backend_theme/static/description/assets/screenshots/form.png
  73. BIN
      multicolor_backend_theme/static/description/assets/screenshots/kanban.png
  74. BIN
      multicolor_backend_theme/static/description/assets/screenshots/login.png
  75. BIN
      multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png
  76. BIN
      multicolor_backend_theme/static/description/assets/screenshots/tree.png
  77. BIN
      multicolor_backend_theme/static/description/banner.png
  78. BIN
      multicolor_backend_theme/static/description/icon.png
  79. 613
      multicolor_backend_theme/static/description/index.html
  80. BIN
      multicolor_backend_theme/static/description/theme_screenshot.png
  81. 57
      multicolor_backend_theme/static/src/css/img_picker.css
  82. BIN
      multicolor_backend_theme/static/src/img/dashboard-header.jpg
  83. 94
      multicolor_backend_theme/static/src/js/jquery_img_picker.js
  84. 22
      multicolor_backend_theme/static/src/js/login_page.js
  85. 95
      multicolor_backend_theme/static/src/js/search_apps.js
  86. 87
      multicolor_backend_theme/static/src/js/sidebar_menu.js
  87. 583
      multicolor_backend_theme/static/src/js/systray_theme_menu.js
  88. 202
      multicolor_backend_theme/static/src/scss/theme_style.scss
  89. 1706
      multicolor_backend_theme/static/src/scss/theme_style_backend.scss
  90. 1121
      multicolor_backend_theme/static/src/wcolpick/wcolpick.css
  91. 1028
      multicolor_backend_theme/static/src/wcolpick/wcolpick.js
  92. 22
      multicolor_backend_theme/static/src/xml/base_ext.xml
  93. 90
      multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml
  94. 107
      multicolor_backend_theme/static/src/xml/systray_ext.xml
  95. 37
      multicolor_backend_theme/views/login_templates.xml

44
multicolor_backend_theme/README.md

@ -0,0 +1,44 @@
Chameleon Multi color Backend Theme
===================================
* Chameleon Multi color Backend Theme module for Odoo 15
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/15.0/legal/licenses/licenses.html)
Company
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
Credits
-------
* Developer:
Linto CT @ Cybrosys
Sanjith Rashin @ Cybrosys
V14 Dino @ Cybrosys
V15 Sigha Ck @ Cybrosys
Contacts
--------
* Mail Contact : odoo@cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

24
multicolor_backend_theme/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import models
from . import controllers

78
multicolor_backend_theme/__manifest__.py

@ -0,0 +1,78 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
"name": "Chameleon Multi Color Backend Theme",
"version": "15.0.1.0.0",
"category": "Themes/Backend",
"summary": "Configurable multi color backend theme for Odoo 15",
"description": """
Configurable multi color backend theme for Odoo 15
""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
"website": "https://www.cybrosys.com",
'images': [
'static/description/banner.png',
'static/description/theme_screenshot.png',
],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': False,
"depends": [
'website',
'portal',
'mail',
],
"data": [
'security/ir.model.access.csv',
'data/theme_data.xml',
'views/login_templates.xml',
],
"assets": {
'web.assets_backend': [
'/multicolor_backend_theme/static/src/scss/theme_style_backend.scss',
'/multicolor_backend_theme/static/src/css/img_picker.css',
'/multicolor_backend_theme/static/src/wcolpick/wcolpick.css',
'/multicolor_backend_theme/static/src/js/sidebar_menu.js',
'/multicolor_backend_theme/static/src/wcolpick/wcolpick.js',
'/multicolor_backend_theme/static/src/js/jquery_img_picker.js',
'/multicolor_backend_theme/static/src/js/search_apps.js',
'/multicolor_backend_theme/static/src/js/systray_theme_menu.js'
],
'web.assets_frontend': [
'/multicolor_backend_theme/static/src/scss/theme_style.scss',
'/multicolor_backend_theme/static/src/js/login_page.js'
],
'web.assets_qweb': [
'multicolor_backend_theme/static/src/xml/base_ext.xml',
'multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml',
'multicolor_backend_theme/static/src/xml/systray_ext.xml',
],
},
}

23
multicolor_backend_theme/controllers/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import main

39
multicolor_backend_theme/controllers/main.py

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import json
from odoo import http
from odoo.http import request
class LoginPage(http.Controller):
@http.route(['/active_theme'], auth='public', type='http')
def find_active_theme(self):
active_theme = request.env['theme.config'].search_read(
domain=[('theme_active', '=', True)],
fields=['theme_main_color',
'view_font_color',
'theme_font_color'])
active_theme = active_theme[0] if active_theme else []
print("active_theme_from cont",active_theme)
return json.dumps(active_theme)

28
multicolor_backend_theme/data/theme_data.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record id="theme_01" model="theme.config">
<field name="name">Theme 1</field>
<field name="theme_main_color">#6fb702</field>
<field name="theme_font_color">#fff</field>
<field name="view_font_color">#333</field>
<field name="theme_active">true</field>
</record>
<record id="theme_02" model="theme.config">
<field name="name">Theme 2</field>
<field name="theme_main_color">#404a5e</field>
<field name="theme_font_color">#fff</field>
<field name="view_font_color">#404a5e</field>
<field name="theme_active">false</field>
</record>
<record id="theme_03" model="theme.config">
<field name="name">Theme 3</field>
<field name="theme_main_color">#f39b12</field>
<field name="theme_font_color">#000</field>
<field name="view_font_color">#333</field>
<field name="theme_active">false</field>
</record>
</data>
</odoo>

6
multicolor_backend_theme/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <multicolor_backend_theme>
#### 28.02.2023
#### Version 15.0.1.0.0
#### ADD
- Initial Commit for Theme Chameleon Multi color Backend

22
multicolor_backend_theme/models/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# 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 (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import theme_config

121
multicolor_backend_theme/models/theme_config.py

File diff suppressed because one or more lines are too long

2
multicolor_backend_theme/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_themes,themes_selection,model_theme_config,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_themes themes_selection model_theme_config 1 1 1 1

BIN
multicolor_backend_theme/static/description/assets/all_screens.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
multicolor_backend_theme/static/description/assets/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

BIN
multicolor_backend_theme/static/description/assets/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 MiB

BIN
multicolor_backend_theme/static/description/assets/hero1.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 KiB

BIN
multicolor_backend_theme/static/description/assets/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/._.DS_Store

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._cogs.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._consultation.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._ecom-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._education-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._hotel-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._license.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._lifebuoy.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._manufacturing-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._pos-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._puzzle.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._restaurant-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._service-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._trading-black.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._training.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._update.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._user.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/._wrench.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
multicolor_backend_theme/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/design.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
multicolor_backend_theme/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
multicolor_backend_theme/static/description/assets/icons/feature-icons/._lifebuoy.png

Binary file not shown.

BIN
multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

BIN
multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

BIN
multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
multicolor_backend_theme/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
multicolor_backend_theme/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
multicolor_backend_theme/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
multicolor_backend_theme/static/description/assets/icons/quality.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/responsive.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
multicolor_backend_theme/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
multicolor_backend_theme/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
multicolor_backend_theme/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
multicolor_backend_theme/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
multicolor_backend_theme/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
multicolor_backend_theme/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
multicolor_backend_theme/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/advance_search.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chameleon_8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/chat_box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/color_picker.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/control_panel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/form.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/kanban.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/login.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
multicolor_backend_theme/static/description/assets/screenshots/tree.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
multicolor_backend_theme/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
multicolor_backend_theme/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

613
multicolor_backend_theme/static/description/index.html

@ -0,0 +1,613 @@
<!-- HERO -->
<div class="container">
<div class="row" style="padding: 4rem 2.5rem 0 !important; background-color: #fff !important;">
<div class="col-lg-12 d-flex flex-column align-items-center">
<h1 class="text-center text-uppercase"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bolder !important; font-size: 2.5rem !important; color: #212121;">
Chameleon Backend theme
</h1>
<p class="my-1 text-center text-uppercase"
style="letter-spacing: 4px !important; color: #74788D !important;"> Choose your color by yourself.</p>
</div>
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin: 2rem 0;">
<img src="./assets/hero1.gif" width="100%" height="auto" class="img-responsive">
</div>
</div>
</div>
<!-- END OF HERO -->
<!-- OVERVIEW -->
<div class="container">
<div class="row" style="padding: 0rem 2.5rem !important; background-color: #fff !important;">
<div class="col-lg-12 d-flex flex-column justify-content-center">
<p class="my-1 text-center"
style="font-family: Montserrat, 'sans-serif' !important; color: #212121 !important;">
Enables a user friendly backend theme for Odoo 15.0 community edition.
</p>
</div>
<div class="col-lg-12 mt-4">
<div class="alert alert-warning text-center" role="alert">
<i class="fa fa-exclamation-triangle mr-2" aria-hidden="true"></i>Please make sure that you install
all
your apps prior to the installation of this theme.
</div>
</div>
</div>
</div>
<!-- END OF OVERVIEW-->
<!-- FEATURE -->
<div class="container" style="margin-top: 3rem;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<hr class="position-absolute"
style="border: 1px solid #c4c6cc !important; width: 40% !important; z-index: 0 !important;">
<h2
style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;">
Features</h2>
</div>
</div>
<!-- RESPONSIVE -->
<div class="container w-50" style="margin: 3rem auto;">
<div class="row">
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./assets/icons/design.png">
</div>
<h6 class="my-4 text-center">Carefully Crafted</h6>
</div>
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./assets/icons/responsive.png">
</div>
<h6 class="my-4 text-center">Responsive Design</h6>
</div>
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./assets/icons/quality.png">
</div>
<h6 class="my-4 text-center">Quality Checked</h6>
</div>
</div>
</div>
</div>
</div>
<!-- END OF RESPONSIVE -->
<!-- FEATURE -->
<div class="container" style="margin-top: 3rem;">
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #556EE6 !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2.5rem 1.5rem!important;">
<div class="row mt-4">
<div class="col-lg-6">
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Modified Font</p>
</span>
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>New Color Combination</p>
</span>
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Full Screen View</p>
</span>
</div>
<div class="col-lg-6">
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Stages are Seperated in View</p>
</span>
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Clean Layout</p>
</span>
<span class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Buttons with New Colors</p>
</span>
</div>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<!-- <img src="./assets/all_screens.png" class="img-responsive" width="100% !important"
height="auto !important"> -->
</div>
</div>
</div>
</div>
</div>
<!-- SCREENSHOTS -->
<div class="container" style="margin-top: 3rem;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<hr class="position-absolute"
style="border: 1px solid #c4c6cc !important; width: 40% !important; z-index: 0 !important;">
<h2
style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;">
Screenshots</h2>
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">1</h6>
</div>
<h6 class="mt-2 ml-2">Login Page</h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/login.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">2</h6>
</div>
<h6 class="mt-2 ml-2"> Expanded side bar </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/exp_sidebar.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">3</h6>
</div>
<h6 class="mt-2 ml-2"> Minimized side bar </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/min_sidebar.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">4</h6>
</div>
<h6 class="mt-2 ml-2"> Tree view </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/tree.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">5</h6>
</div>
<h6 class="mt-2 ml-2"> Kanban view </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/kanban.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">6</h6>
</div>
<h6 class="mt-2 ml-2"> Form view </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/form.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">7</h6>
</div>
<h6 class="mt-2 ml-2"> Color picker </h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/color_picker.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">8</h6>
</div>
<h6 class="mt-2 ml-2"> Control panel
</h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/control_panel.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">8</h6>
</div>
<h6 class="mt-2 ml-2"> Chat Box
</h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/chat_box.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
<div class="row shadow"
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 3px solid #74788D !important; min-width: 100% !important;">
<div class="col-lg-12" style="padding: 2rem 1.5rem!important;">
<div class="d-flex my-3">
<div class="d-flex justify-content-center align-items-center"
style="background-color: #556EE6 !important; border: 4px solid #D4DAF9 !important; color: #fff !important; height: 35px; width: 35px; border-radius: 50% !important; font-size: 1.1rem !important;">
<h6 style="margin-top: 0.3rem; color: #fff !important;">8</h6>
</div>
<h6 class="mt-2 ml-2"> Advanced Search
</h6>
</div>
</div>
<div class="col-lg-12" style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/advance_search.png" width="100%" height="auto" class="img-responsive">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mb-4">
<hr class="position-absolute"
style="border: 1px solid #c4c6cc !important; width: 40% !important; z-index: 0 !important;">
<h2
style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;">
Our Services</h2>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important; background-color: #fff !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mb-4">
<hr class="position-absolute"
style="border: 1px solid #c4c6cc !important; width: 40% !important; z-index: 0 !important;">
<h2
style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;">
Our Industries</h2>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Easily
procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">A
platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Plan,
track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Keep
track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">Run
your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem; background-color: #fff !important;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mb-4">
<hr class="position-absolute"
style="border: 1px solid #c4c6cc !important; width: 40% !important; z-index: 0 !important;">
<h2
style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;">
Need Help?</h2>
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-4">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-4">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
</div>
<div class="col-lg-4">
<a href="skype:cybrosystechnologies?chat" target="_blank" class="btn btn-block deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>cybrosystechnologies</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem; background-color: #fff !important;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
</div>
</section>
<!-- END OF FOOTER -->

BIN
multicolor_backend_theme/static/description/theme_screenshot.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

57
multicolor_backend_theme/static/src/css/img_picker.css

@ -0,0 +1,57 @@
:root{
--theme_main_color: #AD7B90 !default;
--theme_font_color: black !default;
--view_font_color
}
.img-upload-btn {
position: relative;
overflow: hidden;
padding-top: 95%;
}
.img-upload-btn input[type=file] {
position: absolute;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
font-size: 100px;
text-align: right;
filter: alpha(opacity=0);
opacity: 0;
outline: none;
background: white;
cursor: inherit;
display: block;
}
.img-upload-btn i {
position: absolute;
height: 16px;
width: 16px;
top: 50%;
left: 50%;
margin-top: -8px;
margin-left: -8px;
}
.btn-radio {
position: relative;
overflow: hidden;
}
.btn-radio input[type=radio] {
position: absolute;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
font-size: 100px;
text-align: right;
filter: alpha(opacity=0);
opacity: 0;
outline: none;
background: white;
cursor: inherit;
display: block;
}

BIN
multicolor_backend_theme/static/src/img/dashboard-header.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

94
multicolor_backend_theme/static/src/js/jquery_img_picker.js

@ -0,0 +1,94 @@
(function ($) {
$.fn.imagePicker = function (options) {
// Define plugin options
var settings = $.extend({
// Input name attribute
name: "",
// Classes for styling the input
class: "form-control btn btn-default btn-block",
// Icon which displays in center of input
icon: "fa fa-plus"
}, options);
// Create an input inside each matched element
return this.each(function () {
$(this).html(create_btn(this, settings));
});
};
// Private function for creating the input element
function create_btn(that, settings) {
// The input icon element
var picker_btn_icon = $('<i class="' + settings.icon + '"></i>');
///home/cybrosys/odoo14
if (settings.remove != true && settings.widget.active_theme.sidebar_image) {
var picker_btn_input = create_preview(
that,
settings.widget.active_theme.sidebar_image,
settings);
var picker_btn = picker_btn_input;
}
else {
// The actual file input which stays hidden
var picker_btn_input = $('<input type="file" name="' + settings.name + '" />');
var picker_btn = $('<div class="' + settings.class + ' img-upload-btn"></div>')
.append(picker_btn_icon)
.append(picker_btn_input);
}
// The actual element displayed
// File load listener
picker_btn_input.change(function () {
if ($(this).prop('files')[0]) {
// Use FileReader to get file
var reader = new FileReader();
// Create a preview once image has loaded
reader.onload = function (e) {
var preview = create_preview(that, e.target.result, settings);
$(that).html(preview);
settings.widget._onImageLoad(e.target.result);
};
// Load image
reader.readAsDataURL(picker_btn_input.prop('files')[0]);
}
});
return picker_btn
};
// Private function for creating a preview element
function create_preview(that, src, settings) {
// The preview image
var picker_preview_image = $('<img src="' + src + '" class="img-responsive img-rounded" />');
// The remove image button
var picker_preview_remove = $('<button class="btn btn-link fa fa-trash-o"><small></small></button>');
// The preview element
var picker_preview = $('<div class="image-container"></div>')
.append(picker_preview_image)
.append(picker_preview_remove);
// Remove image listener
picker_preview_remove.click(function () {
settings.remove = true;
var btn = create_btn(that, settings);
$(that).html(btn);
settings.widget._onRemoveImage();
});
return picker_preview;
};
}(jQuery));
$(document).ready(function () {
$('.img-picker').imagePicker({name: 'images'});
});

22
multicolor_backend_theme/static/src/js/login_page.js

@ -0,0 +1,22 @@
odoo.define('multicolor_backend_theme.LoginPage', function (require) {
"use strict";
var rpc = require('web.rpc');
var selected_theme = {};
$(document).ready(function () {
$.ajax({
url: '/active_theme',
type: 'get',
}).then(function (result) {
var colors = JSON.parse(result);
$('.cybro-login-btn').css({
'background-color': colors.theme_main_color,
'color': colors.theme_font_color
});
$('.cybro-super-btn').css({
'color': colors.view_font_color
});
});
});
});

95
multicolor_backend_theme/static/src/js/search_apps.js

@ -0,0 +1,95 @@
/** @odoo-module */
import { NavBar } from "@web/webclient/navbar/navbar";
import { registry } from "@web/core/registry";
const { fuzzyLookup } = require('@web/core/utils/search');
import { computeAppsAndMenuItems } from "@web/webclient/menus/menu_helpers";
import core from 'web.core';
const commandProviderRegistry = registry.category("command_provider");
import { patch } from 'web.utils';
patch(NavBar.prototype, 'multicolor_backend_theme/static/src/js/search_apps.js', {
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
/**
* @override
*/
setup() {
this._super();
this._search_def = $.Deferred();
let { apps, menuItems } = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root"));
this._apps = apps;
this._searchableMenus = menuItems;
},
mounted() {
this._super();
this.$search_container = $(".search-container");
this.$search_input = $(".search-input input");
this.$search_results = $(".search-results");
this.$app_menu = $(".app-menu");
this.$dropdown_menu = $(".dropdown-menu");
},
_searchMenusSchedule: function () {
this.$search_results.removeClass("o_hidden")
this.$app_menu.addClass("o_hidden");
this._search_def.reject();
this._search_def = $.Deferred();
setTimeout(this._search_def.resolve.bind(this._search_def), 50);
this._search_def.done(this._searchMenus.bind(this));
},
_searchMenus: function () {
var query = this.$search_input.val();
if (query === "") {
this.$search_container.removeClass("has-results");
this.$app_menu.removeClass("o_hidden");
this.$search_results.empty();
return;
}
var results = [];
fuzzyLookup(query, this._apps, (menu) => menu.label)
.forEach((menu) => {
results.push({
category: "apps",
name: menu.label,
actionID: menu.actionID,
id: menu.id,
webIconData: menu.webIconData,
});
});
fuzzyLookup(query, this._searchableMenus, (menu) =>
(menu.parents + " / " + menu.label).split("/").reverse().join("/")
).forEach((menu) => {
results.push({
category: "menu_items",
name: menu.parents + " / " + menu.label,
actionID: menu.actionID,
id: menu.id,
});
});
this.$search_container.toggleClass(
"has-results",
Boolean(results.length)
);
this.$search_results.html(
core.qweb.render(
"multicolor_backend_theme.SearchResults",
{
results: results,
widget: this,
}
)
);
},
});

87
multicolor_backend_theme/static/src/js/sidebar_menu.js

@ -0,0 +1,87 @@
odoo.define('multicolor_backend_theme.sidebar', function (require) {
'use strict';
//sidebar toggle effect
$(document).on("click", "#closeSidebar", function(event){
$("#closeSidebar").hide();
$("#openSidebar").show();
});
$(document).on("click", "#openSidebar", function(event){
$("#openSidebar").hide();
$("#closeSidebar").show();
});
$(document).on("click", "#openSidebar", function(event){
$("#sidebar_panel").css({'display':'block'});
$(".o_action_manager").css({'margin-left': '320px','transition':'all .1s linear'});
//add class in navbar
var navbar = $(".o_main_navbar");
var navbar_id = navbar.data("id");
$("nav").addClass(navbar_id);
navbar.addClass("small_nav");
//add class in action-manager
var action_manager = $(".o_action_manager");
var action_manager_id = action_manager.data("id");
$("div").addClass(action_manager_id);
action_manager.addClass("sidebar_margin");
//add class in top_heading
var top_head = $(".top_heading");
var top_head_id = top_head.data("id");
$("div").addClass(top_head_id);
top_head.addClass("sidebar_margin");
});
$(document).on("click", "#closeSidebar", function(event){
$("#sidebar_panel").css({'display':'none'});
$(".o_action_manager").css({'margin-left': '0px'});
//remove class in navbar
var navbar = $(".o_main_navbar");
var navbar_id = navbar.data("id");
$("nav").removeClass(navbar_id);
navbar.removeClass("small_nav");
//remove class in action-manager
var action_manager = $(".o_action_manager");
var action_manager_id = action_manager.data("id");
$("div").removeClass(action_manager_id);
action_manager.removeClass("sidebar_margin");
});
$(document).on("click", ".sidebar a", function(event){
var menu = $(".sidebar a");
var $this = $(this);
var id = $this.data("id");
$("header").removeClass().addClass(id);
menu.removeClass("active");
$this.addClass("active");
//sidebar close on menu-item click
$("#sidebar_panel").css({'display':'none'});
$(".o_action_manager").css({'margin-left': '0px'});
$("#closeSidebar").hide();
$("#openSidebar").show();
//remove class in navbar
var navbar = $(".o_main_navbar");
var navbar_id = navbar.data("id");
$("nav").removeClass(navbar_id);
navbar.removeClass("small_nav");
//remove class in action-manager
var action_manager = $(".o_action_manager");
var action_manager_id = action_manager.data("id");
$("div").removeClass(action_manager_id);
action_manager.removeClass("sidebar_margin");
//remove class in top_heading
var top_head = $(".top_heading");
var top_head_id = top_head.data("id");
$("div").removeClass(top_head_id);
top_head.removeClass("sidebar_margin");
});
});

583
multicolor_backend_theme/static/src/js/systray_theme_menu.js

@ -0,0 +1,583 @@
/** @odoo-module **/
import SystrayMenu from 'web.SystrayMenu';
import Widget from 'web.Widget';
import Session from 'web.session';
import { patch } from 'web.utils';
import { LoadingIndicator } from "@web/webclient/loading_indicator/loading_indicator";
import { Discuss } from "@mail/components/discuss/discuss";
import { Chatter} from "@mail/components/chatter/chatter";
var core = require('web.core');
var session = require('web.session');
var QWeb = core.qweb;
var _t = core._t;
var rpc = require('web.rpc');
var allowedExtensions = /(\.jpg|\.jpeg)$/i;
var ControlPanel = require('web.ControlPanel');
var DropdownMenu = require('web.DropdownMenu');
var FormRenderer = require('web.FormRenderer');
var ListRenderer = require('web.ListRenderer');
var KanbanRenderer = require('web.KanbanRenderer');
var KanbanRecord = require('web.KanbanRecord');
var AbstractController = require('web.AbstractController');
var utils = require('web.utils');
var web_settings_dashboard = require("website.backend.dashboard");
var selected_theme = {};
var themes_to_update = {};
$(document).ready(function () {
rpc.query({
model: 'theme.config',
method: 'search_read',
domain: [['theme_active', '=', true]],
}).then(function (res) {
var index_str = -1
if (res[0].sidebar_image){
index_str= res[0].sidebar_image.indexOf('dataimage/jpegbase64')
}
var res_theme = ''
if (index_str > -1){
res_theme = res[0].sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,')
}
else{
res_theme = res[0].sidebar_image
}
res[0].sidebar_image = res_theme
selected_theme = res_theme;
});
});
var Temple = Widget.extend({
name: 'activity_menu',
template:'multicolor_theme_systray',
events: {
'click .themes_selector_button': '_onThemeSelectorClick',
'change .theme_select': '_onThemeClick',
'click .button-create': '_onThemeCreate',
'click .button-remove': '_onThemeRemove',
'click .button-apply': '_onThemeApply',
'click .row.name i.fa-pencil': '_onNameEdit',
'click .row.name i.fa-check': '_onNameSave',
'change .row.name input#name': '_onNameSave',
'keyup .row.name input#name': '_onNameChange'
},
start:function(){
this._loadDefaults();
this._apply_theme();
if (session.is_admin == false) {
$('.themes_selector_button').css('display', 'none');
}
return this._super();
},
init: function (parent) {
this.theme_data = {};
this.selected_theme = {};
this.themes_by_id = {};
return this._super.apply(this, arguments);
},
willStart: function () {
var self = this;
var get_them_data = rpc.query({
model: 'theme.config',
method: 'search_read',
args: []
});
return $.when(get_them_data).then(function (theme_data) {
self.theme_data = theme_data;
for (var i in theme_data) {
if (theme_data[i].theme_active == true) {
self.selected_theme = theme_data[i];
selected_theme = theme_data[i];
}
self.themes_by_id[theme_data[i].id] = theme_data[i];
}
if (!self.selected_theme) {
self.selected_theme = theme_data[0];
}
});
},
_loadDefaults: function () {
var self = this;
var item_theme = ''
var theme = ''
if(self.themes_by_id[$('.theme_select').val()] != undefined){
item_theme = self.themes_by_id[$('.theme_select').val()]
var index_of = -1
if (item_theme.sidebar_image){
index_of = item_theme.sidebar_image.indexOf('dataimage/jpegbase64')
}
if (index_of > -1){
theme = item_theme.sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,')
}
else{
theme = item_theme.sidebar_image
}
item_theme.sidebar_image = theme
}
self.active_theme = item_theme
$('.img-picker').imagePicker({
name: 'images',
widget: self
});
var color_el = [
'theme_main_color',
'theme_font_color',
'view_font_color'
];
for (var i in color_el) {
var el_color = self.selected_theme[color_el[i]];
$('#' + color_el[i]).loads({
layout: 'hex',
flat: false,
enableAlpha: false,
color: el_color,
onSubmit: function(ev) {
var el_id = $(ev.el).attr('id');
$('#'+el_id).css('background-color', '#' + ev.hex);
$('#'+el_id).val("#" + ev.hex);
$('#'+el_id).hides();
self._onchangeColor($(ev.el), ev.hex);
},
onLoaded: function(ev) {
$('.picker').css('color', 'green');
},
onChange: function(ev) {
var el_id = $(ev.el).attr('id');
//$('#'+el_id).css('background-color', '#' + ev.hex);
$('#'+el_id).setColor(ev.hex, false);
$('.picker').css('color', 'red');
}
});
}
return;
},
_onNameEdit: function () {
$('.row.name #name').removeAttr('readonly');
$('.row.name #name').css('background-color', 'rgb(238, 250, 239)');
},
_onRemoveImage: function () {
//this._updateActiveTheme();
this.themes_by_id[$('.theme_select').val()].sidebar_image = '';
if (this.themes_by_id[$('.theme_select').val()].theme_active == true) {
this.selected_theme.sidebar_image = '';
}
rpc.query({
model: 'theme.config',
method: 'write',
args: [
parseInt($('.theme_select').val()),
{'sidebar_image': ''}
]
}).then(function () {
$('.button-apply.fa-check').css('color', 'green');
themes_to_update[$('.theme_select').val()] = true;
});
},
_onNameSave: function () {
var name_inp = $('.row.name input#name').val().trim();
if (this.themes_by_id[$('.theme_select').val()].theme_active == true) {
this.selected_theme.name = name_inp;
}
//this.selected_theme.name = name_inp;
this.themes_by_id[$('.theme_select').val()].name = name_inp;
rpc.query({
model: 'theme.config',
method: 'write',
args: [
parseInt($('.theme_select').val()),
{'name': name_inp}
]
}).then(function () {
$('.button-apply.fa-check').css('color', 'green');
themes_to_update[$('.theme_select').val()] = true;
});
$('.row.name #name').attr('readonly', 'readonly');
$('.row.name #name').css('background-color', 'white');
$('.row.name i').replaceWith(
"<i class='fa fa-pencil'/>"
);
$('option#' + $('.theme_select').val()).text(name_inp);
},
_onNameChange: function () {
$('.button-apply.fa-check').css('color', 'red');
delete themes_to_update[$('.theme_select').val()];
var name_inp = $('.row.name input#name').val().trim();
if (name_inp && (this.themes_by_id[$('.theme_select').val()].name != name_inp)) {
$('.row.name i').replaceWith(
"<i class='fa fa-check'/>"
);
}
},
_onThemeSelectorClick: function () {
$('.themes_selector').toggleClass('show');
$('.row.name #name').attr('readonly', 'readonly');
$('.row.name #name').css('background-color', 'white');
},
_onImageLoad: function (img_data) {
this._onchangeColor("image", img_data);
},
_onchangeColor: function (element, data) {
var $apply = $('.button-apply.fa-check');
var current_theme = this.themes_by_id[$('.theme_select').val()];
if (element == "image") {
$apply.css('color', 'red');
delete themes_to_update[$('.theme_select').val()];
current_theme.sidebar_image = data;
this.themes_by_id[current_theme.id].sidebar_image = data;
var index_str= data.indexOf('dataimage/jpegbase64')
if (index_str > -1){
var img_data = data.replace('dataimage/jpegbase64','data:image/jpeg;base64,')
}
else{
img_data = data
}
var vals = {
'sidebar_image': img_data,
'theme_id': current_theme.id,
};
rpc.query({
model: 'theme.config',
method: 'update_image',
args: [vals]
}).then(function () {
$apply.css('color', 'green');
themes_to_update[$('.theme_select').val()] = true;
});
}
else if ('#' + data != current_theme[element.attr('id')]) {
$apply.css('color', 'red');
current_theme[element.attr('id')] = '#' + data;
this.themes_by_id[current_theme.id][element.attr('id')] = '#' + data;
var el_id = element.attr('id');
var vals = {
'theme_id': current_theme.id,
'key': el_id,
'value': data
};
rpc.query({
model: 'theme.config',
method: 'update_color',
args: [vals]
}).then(function () {
$apply.css('color', 'green');
});
}
return;
},
_onThemeClick: function () {
var $theme_el = QWeb.render(
'multicolor_backend_theme.selected_theme', {
widget: {
selected_theme: this.themes_by_id[$('.theme_select').val()]
}
});
$('div.theme_data').replaceWith($($theme_el));
this._loadDefaults();
if (themes_to_update[$('.theme_select').val()] == true) {
$('.button-apply.fa-check').css('color', 'green');
}
else {
$('.button-apply.fa-check').css('color', '#4c4c4c');
}
},
_onThemeCreate: function () {
var self = this;
rpc.query({
model: 'theme.config',
method: 'create_new_theme'
}).then(function (result) {
self._updateThemeData(result[1]);
var theme_el = QWeb.render(
'multicolor_backend_theme.selected_theme', {
widget: {
selected_theme: self.themes_by_id[result[0]]
}
});
$('div.theme_data').replaceWith($(theme_el));
var opt_el = "<option value='"+result[0]+"' >" +
self.themes_by_id[result[0]].name + "</option>";
$('.theme_select').append($(opt_el));
$('.theme_select').val(result[0]);
self._loadDefaults();
});
},
_onThemeRemove: function () {
var self = this;
var curr_theme = $('.theme_select').val();
var theme_rec = this.themes_by_id[curr_theme];
if (theme_rec.theme_active == true) {
alert("You cannot delete an active theme.")
}
else {
rpc.query({
model: 'theme.config',
method: 'check_for_removal',
args: [curr_theme]
}).then(function (theme_data) {
if (theme_data) {
self._updateThemeData(theme_data);
var theme_el = QWeb.render(
'multicolor_backend_theme.selected_theme', {
widget: self
});
$('div.theme_data').replaceWith($(theme_el));
$(".theme_select option[value='" + theme_rec.id + "']").remove();
$(".theme_select").val(self.selected_theme.id);
self._loadDefaults();
}
});
}
},
_onThemeApply: function () {
var curr_theme_id = $('.theme_select').val();
rpc.query({
model: 'theme.config',
method: 'update_active_theme',
args: [curr_theme_id]
}).then(function () {
window.location.reload();
});
},
_updateThemeData: function (theme_data) {
this.themes_by_id = {};
this.theme_data = theme_data;
for (var i in theme_data) {
this.themes_by_id[theme_data[i].id] = theme_data[i];
}
return;
},
_apply_theme: function () {
if (this.selected_theme) {
document.documentElement.style.setProperty("--theme_main_color",this.selected_theme.theme_main_color);
document.documentElement.style.setProperty("--theme_font_color",this.selected_theme.theme_font_color);
document.documentElement.style.setProperty("--view_font_color",this.selected_theme.view_font_color);
var index_of = -1
if (this.selected_theme.sidebar_image){
index_of = this.selected_theme.sidebar_image.indexOf('dataimage/jpegbase64')
}
var img = ''
if (index_of > -1){
img = this.selected_theme.sidebar_image.replace('dataimage/jpegbase64','data:image/jpeg;base64,')
}
else{
img = this.selected_theme.sidebar_image
}
$('.sidebar-overlay-image').append(
"<img src='" + img + "'/>");
$('.cybro-main-menu .input-group-text').css({
'background-color': this.selected_theme.theme_main_color,
'border-color': this.selected_theme.theme_main_color,
'color': this.selected_theme.theme_font_color,
});
$('.o_loading').css({
'background-color': this.selected_theme.theme_main_color,
'color': this.selected_theme.theme_font_color,
});
$('.btn-primary').css({
'background-color': this.selected_theme.theme_main_color,
'color': this.selected_theme.theme_font_color,
});
}
},
});
patch(Discuss.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{
_onDiscussItemClicked: function (ev) {
this._super(ev);
this.$('.o_mail_discuss_title_main').css({
'box-shadow': 'none',
});
this.$('.o_mail_discuss_title_main.o_active').css({
'box-shadow': 'inset 3px 0 0 ' + selected_theme.theme_main_color,
});
},
_renderSidebar: function (options) {
var res = this._super(options);
res.find('.o_mail_discuss_title_main').css({
'box-shadow': 'none',
});
res.find('.o_mail_discuss_title_main.o_active').css({
'box-shadow': 'inset 3px 0 0 ' + selected_theme.theme_main_color,
});
return res;
},
});
SystrayMenu.Items.push(Temple);
patch(ControlPanel.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{
_update_search_view: function (searchview, isHidden, groupable, enableTimeRangeMenu) {
this._super(searchview, isHidden, groupable, enableTimeRangeMenu);
if (selected_theme) {
this.$('span.o_searchview_more').css({
background: selected_theme.theme_main_color,
color: selected_theme.theme_font_color
});
document.documentElement.style.setProperty("--theme_main_color",this.selected_theme.theme_main_color);
this.$('.o_searchview .o_searchview_facet .o_searchview_facet_label').css({
'background-color': selected_theme.theme_main_color
});
this.$('.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label').css({
'color': selected_theme.theme_font_color
});
// button properties
this.$('.btn-primary').css({
'background-color': selected_theme.theme_main_color,
'border-color': selected_theme.theme_main_color,
'color': selected_theme.theme_font_color
});
this.$('.btn-primary:hover').css({
'background-color': selected_theme.theme_main_color,
'border-color': selected_theme.theme_main_color,
'color': selected_theme.theme_font_color
});
}
},
update: function (status, options) {
this._super(status, options);
this.$('button.o_dropdown_toggler_btn.btn.btn-secondary.dropdown-toggle').css({
'background-color': selected_theme.theme_main_color,
'border-color': selected_theme.theme_main_color,
'color': selected_theme.theme_font_color
});
},
/**
* Private function that renders a breadcrumbs' li Jquery element
*/
_render_breadcrumbs_li: function (bc, index, length) {
var $bc = this._super(bc, index, length);
$bc.find('a').css({
'color': selected_theme.view_font_color
});
return $bc;
}
});
FormRenderer.include({
_renderTagSheet: function (node) {
var sheet = this._super(node);
sheet.find('.fa, .o_stat_value').css(
'color', selected_theme.view_font_color);
return sheet;
},
_renderHeaderButtons: function (node) {
var buttons_obj = this._super(node);
buttons_obj.find('.btn-primary').css({
'background-color': selected_theme.theme_main_color,
'border-color': selected_theme.theme_main_color,
'color': selected_theme.theme_font_color
});
buttons_obj.find('.btn-primary:hover').css({
'background-color': selected_theme.theme_main_color,
'border-color': selected_theme.theme_main_color,
'color': selected_theme.theme_font_color
});
return buttons_obj;
},
_renderTagHeader: function (node) {
var statusbar_el = this._super(node);
statusbar_el.find('button.btn.o_arrow_button.btn-primary.disabled').css({
'color': selected_theme.view_font_color
});
return statusbar_el;
},
_renderTagForm: function (node) {
var $res = this._super(node);
$res.find('a').css(
'color', selected_theme.view_font_color);
$res.find('.o_field_widget.o_field_many2one .o_external_button').css(
'color', selected_theme.view_font_color);
$res.find('.btn-primary').css(
'background-color', selected_theme.theme_main_color);
$res.find('.btn-primary').css(
'color', selected_theme.theme_font_color);
return $res;
},
});
ListRenderer.include({
setRowMode: function (recordID, mode) {
var self = this;
return this._super(recordID, mode).then(function () {
self.$('.o_external_button').css('color', selected_theme.view_font_color);
});
}
});
KanbanRenderer.include({
_renderView: function () {
return this._super().then(function () {
$('.btn-primary').css('background-color',
selected_theme.theme_main_color);
$('.btn-primary').css('color',
selected_theme.theme_font_color);
});
}
});
KanbanRecord.include({
_render: function () {
var self = this;
return this._super().then(function () {
self.$el.find('.o_kanban_image_fill_left.d-none.d-md-block').css({
'border': '2px solid ' + selected_theme.theme_main_color
});
self.$el.find('.o_field_widget.badge.badge-primary').css({
'background': selected_theme.theme_main_color
});
});
}
});
patch(DropdownMenu.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{
_renderMenuItems: function () {
this._super();
if (selected_theme) {
$('span.o_searchview_more').css({
background: selected_theme.theme_main_color,
color: selected_theme.theme_font_color
});
$('.o_searchview .o_searchview_facet .o_searchview_facet_label').css({
'background-color': selected_theme.theme_main_color
});
$('.o_searchview .o_searchview_input_container .o_searchview_facet .o_searchview_facet_label').css({
'color': selected_theme.theme_font_color
});
}
},
});
patch(AbstractController.prototype,'multicolor_backend_theme/static/src/js/systray_theme_menu.js',{
_renderBanner: function () {
var self = this;
return this._super().then(function () {
if (selected_theme) {
self.$('.o_onboarding_wrap').css({
'background-color': selected_theme.theme_main_color
});
var color_val = 'color:' +
selected_theme.theme_font_color +
' !important;';
self.$('.o_onboarding_wrap a,.o_onboarding_wrap p').attr(
'style', color_val
);
}
});
},
});
return Temple;

202
multicolor_backend_theme/static/src/scss/theme_style.scss

@ -0,0 +1,202 @@
@import url('https://fonts.googleapis.com/css?family=Poppins');
body {
font-size: 14px;
font-family: lato, sans-serif
}
h1, h2, h3, h4, h5, h6 {
margin: 0;
font-family: poppins, sans-serif
}
p {
font-family: lato, sans-serif;
font-size: 15px;
line-height: 26px;
color: #444;
margin-bottom: 0
}
p img {
margin: 0
}
a, a:visited {
text-decoration: none;
transition: all .3s ease-in-out;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
outline: 0;
font-family: poppins, sans-serif
}
a:hover {
text-decoration: none
}
a:focus {
text-decoration: none;
outline: 0
}
p a, p a:visited {
line-height: inherit;
outline: 0
}
ul, ol {
margin-bottom: 0;
margin-top: 0;
padding: 0
}
ul {
margin: 0;
list-style-type: none
}
ol {
list-style: decimal
}
ol, ul.square, ul.circle, ul.disc {
margin-left: 0
}
ul.square {
list-style: square outside
}
ul.circle {
list-style: circle outside
}
ul.disc {
list-style: disc outside
}
ul ul, ul ol, ol ol, ol ul {
margin: 0
}
ul ul li, ul ol li, ol ol li, ol ul li {
margin-bottom: 0
}
button {
cursor: pointer;
outline: none !important;
letter-spacing: 0
}
blockquote {
padding: 60px;
position: relative;
background: #853bfa
}
blockquote:before {
content: '\f10d';
font-family: fontawesome;
color: #fff;
font-size: 32px;
position: absolute;
left: 16px;
top: 46px
}
blockquote p {
font-size: 17px;
color: #fff
}
.blockquote-footer {
color: #fff
}
/*==============login================*/
.oe_website_login_container {
padding: 1rem 5rem 5rem;
background: #f1f4f5;
}
.oe_login_form, .oe_signup_form, .oe_reset_password_form {
color: #fff !important;
}
.oe_login_form, .oe_signup_form, .oe_reset_password_form {
max-width: 360px;
position: relative;
margin: 50px auto;
border-radius: 7px;
padding: 3rem;
background: #ffffff;
box-shadow: 0 0 11px 0px #4477d4;
}
.oe_login_form input {
height: 40px !important;
border-radius: 0 !important;
background: #fff !important;
border: 1px solid #ffffff;
}
.oe_login_form i.fa.fa-database {
margin-left: 6px;
}
.oe_login_form a.btn.btn-secondary {
display: flex;
justify-content: space-between;
align-items: center;
border-radius: 0 !important;
}
.cybro-login-btn {
height: 47px;
border-radius: 0;
//background: #3e8df7 !important;
border: none;
//color: #ffffff !important;
font-size: 16px;
}
.cybro-super-btn {
//color: #fff;
font-size: 14px;
text-decoration: none;
}
.cybro-super-btn:hover {
color: black !important;
text-decoration: none;
}
.cybro-bg footer{
background: #303641 !important;
color: #fff;
padding-top: 2rem;
}
.cybro-bg .navbar {
background: #303641 !important;
color: #fff;
}
.cybro-bg footer a,.cybro-bg footer p,.cybro-bg header a,.cybro-bg header p {
color: #fff;
}
.cybro-bg .navbar-light .navbar-nav .nav-link {
color: #ffffff !important;
}
.homepage .dropdown-menu.js_usermenu.dropdown-menu-right.show {
background: #303641;
}
.oe_website_login_container .btn-secondary {
color: #FFFFFF;
background-color: #afafaf;
border-color: #afafae;
}
input {
border: 1px solid #e4eaec !important;
}
.oe_login_form, .oe_signup_form, .oe_reset_password_form {
color: #37474f !important;
font-weight: 300 !important;
}
form label {
font-weight: 300 !important;
}
/*==============//login================*/

1706
multicolor_backend_theme/static/src/scss/theme_style_backend.scss

File diff suppressed because it is too large

1121
multicolor_backend_theme/static/src/wcolpick/wcolpick.css

File diff suppressed because it is too large

1028
multicolor_backend_theme/static/src/wcolpick/wcolpick.js

File diff suppressed because it is too large

22
multicolor_backend_theme/static/src/xml/base_ext.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="ControlPanel">
<t t-jquery="div.o_control_panel" t-operation="replace">
<div class="o_control_panel">
<div class="o_cp_searchview" role="search"/>
<div class="o_cp_right">
<div class="btn-group o_search_options" role="search"/>
<nav class="o_cp_pager" role="search" aria-label="Pager"/>
<nav class="btn-group o_cp_switch_buttons" role="toolbar" aria-label="View switcher"/>
</div>
<hr></hr>
<ol class="breadcrumb" role="navigation"/>
<div class="o_cp_left">
<div class="o_cp_buttons" role="toolbar" aria-label="Control panel toolbar"/>
<aside class="o_cp_sidebar"/>
</div>
</div>
</t>
</t>
</templates>

90
multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1">
<xpath expr="//nav[hasclass('o_main_navbar')]" position="after">
<t t-name="AppsMenuSidebar">
<div class="cybro-sidebar-qweb">
<div class="sidebar-menus" role="menu">
<t t-foreach="menuService.getApps()" t-as="app">
<a t-attf-href="#menu_id={{app.id}}">
<img
class="o-app-icon"
draggable="false"
t-attf-src="data:image/png;base64,{{app.webIconData}}"/></a>
</t>
</div>
</div>
<div class="sidebar_panel" id="sidebar_panel">
<div class="sidebar">
<div class="sidebar_close">
<a id="closeSidebar" style="cursor: pointer;">
</a>
</div>
<div class="search-container form-row align-items-center m-auto mb-5 col-12" style="padding-top: 32px;">
<div class="search-input col-md-10 ml-auto mr-auto mb-5"
t-on-input="_searchMenusSchedule">
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
<i class="fa fa-search"/>
</div>
</div>
<input type="search"
autocomplete="off"
placeholder="Search menus..."
class="form-control"/>
</div>
</div>
<div class="search-results col-md-10 ml-auto mr-auto"/>
</div>
<h6 class="sidebar_head">MENU</h6>
<ul class="sidebar_menu">
<t t-foreach="menuService.getApps()" t-as="app">
<li>
<a role="menuitem"
t-attf-href="#menu_id={{app.id}}"
class="nav-link">
<img class="sidebar_img"
t-attf-src="data:image/png;base64,{{app.webIconData}}"/>
<span class="sidebar_app_name">
<t t-esc="app.name"/>
</span>
</a>
</li>
</t>
</ul>
</div>
</div>
</t>
</xpath>
</t>
<t t-inherit="web.NavBar.AppsMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//Dropdown[hasclass('o_navbar_apps_menu')]" position="replace">
<li class="dropdown">
<a id="openSidebar" style="display: block; cursor: pointer; margin-left: 10px;">
<i class="fa fa-bars fa-lg"/>
</a>
<a id="closeSidebar" style="display: none; cursor: pointer; margin-left: 10px;">
<i class="fa fa-bars fa-lg"/>
</a>
</li>
</xpath>
</t>
<t t-name="multicolor_backend_theme.SearchResults">
<t t-foreach="results" t-as="result">
<div class="search_icons">
<a t-attf-class="o-menu-search-result dropdown-item col-12 ml-auto mr-auto #{result_first ? 'active' : ''}"
t-attf-style="background-image:url('data:image/png;base64,#{result.webIconData}')"
t-attf-href="#menu_id=#{result.id}&amp;action_id=#{result.actionID}"
t-att-data-menu-id="result.id"
t-att-data-action-id="result.actionID"
t-raw="result.name"
onclick="$('.dropdown-menu').removeClass('show'); $('.search-results').addClass('o_hidden'); $('.app-menu').removeClass('o_hidden'); $('.search-input input').val('');"/>
</div>
</t>
</t>
</templates>

107
multicolor_backend_theme/static/src/xml/systray_ext.xml

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<t t-name="multicolor_theme_systray">
<li class="themes_selector_li">
<a class="themes_selector_button" role="button" data-display="static" aria-expanded="false" title="Themes">
<i class="fa fa-paint-brush" role="img" aria-label="Theme Configuration" width="22" height="22"/>
</a>
<div class="themes_selector dropdown-menu-right"
role="menu">
<div class="row">
<div class="themes_list">
<div class="row theme_obj">
<select class="theme_select">
<t t-foreach="widget.theme_data"
t-as="theme_data">
<t t-if="widget.selected_theme.id == theme_data.id">
<option t-att-id="theme_data.id"
selected="selected"
t-att-value="theme_data.id">
<span t-esc="theme_data.name"/>
</option>
</t>
<t t-else="widget.selected_theme.id == theme_data.id">
<option t-att-id="theme_data.id"
t-att-value="theme_data.id">
<span t-esc="theme_data.name"/>
</option>
</t>
</t>
</select>
</div>
</div>
<div class="selected_theme">
<t t-call="multicolor_backend_theme.selected_theme"/>
</div>
</div>
<div class="header_buttons row">
<div class="button-create cell">
Create
</div>
<div class="button-remove cell">
Remove
</div>
<div class="button-apply cell fa fa-check">
Apply
</div>
</div>
</div>
</li>
</t>
<t t-name="multicolor_backend_theme.selected_theme">
<div class="theme_data">
<t t-set="selected_theme" t-value="widget.selected_theme"/>
<div class="theme_extra">
<t t-if="selected_theme.theme_active==true">
<div class="theme-active"><p>Active</p></div>
</t>
</div>
<div class="row name">
<div class="cell">
<p>Name</p>
</div>
<div class="cell">
<input type="text"
id="name"
readonly="readonly"
t-att-value="selected_theme.name"/>
<i class="fa fa-pencil">
</i>
</div>
</div>
<div class="color_selector">
<div class="row theme_main_color">
<div class="cell">
<p>Base color</p>
</div>
<div class="cell">
<div class="color" id="theme_main_color"
t-att-style="'background-color:'+selected_theme.theme_main_color"/>
</div>
</div>
<div class="row theme_font_color">
<div class="cell">
<p>Font color</p>
</div>
<div class="cell">
<div class="color" id="theme_font_color"
t-att-style="'background-color:'+selected_theme.theme_font_color"/>
</div>
</div>
<div class="row view_font_color">
<div class="cell">
<p>View font color</p>
</div>
<div class="cell">
<div class="color" id="view_font_color"
t-att-style="'background-color:'+selected_theme.view_font_color"/>
</div>
</div>
</div>
</div>
</t>
</templates>

37
multicolor_backend_theme/views/login_templates.xml

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="login_templated_ext" inherit_id="web.login"
name="Login Ext">
<xpath expr="//button[@type='submit'][1]" position="replace">
<button type="submit"
class="btn btn-primary btn-block cybro-login-btn">Log
in
</button>
</xpath>
<xpath expr="//t[@t-if='debug']/button" position="replace">
<button type="submit" name="redirect"
value="/web/become"
class="btn btn-link btn-sm btn-block cybro-super-btn">Log in
as
superuser
</button>
</xpath>
</template>
<template id="layout" name="Main layout Ext"
inherit_id="portal.frontend_layout">
<xpath expr="//div[@id='wrapwrap']" position="attributes">
<attribute name="t-attf-class"
add="cybro-bg #{pageName or ''} #{direction == 'rtl' and 'o_rtl' or ''} #{'o_portal' if is_portal else ''}"
separator=" "/>
</xpath>
</template>
<template id="webclient_bootstrap_ext" inherit_id="web.webclient_bootstrap">
<xpath expr="//t[@t-set='head']" position="after">
<div class="cybro-sidebar">
</div>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save