Browse Source

Sep 04 [ADD] Initial Commit 'multicolor_backend_theme'

pull/331/head
AjmalCybro 8 months ago
parent
commit
a92344617d
  1. 51
      multicolor_backend_theme/README.rst
  2. 23
      multicolor_backend_theme/__init__.py
  3. 67
      multicolor_backend_theme/__manifest__.py
  4. 22
      multicolor_backend_theme/controllers/__init__.py
  5. 40
      multicolor_backend_theme/controllers/theme_config.py
  6. 26
      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. 57
      multicolor_backend_theme/models/theme_config.py
  10. 3
      multicolor_backend_theme/security/ir.model.access.csv
  11. 13
      multicolor_backend_theme/security/security_groups.xml
  12. BIN
      multicolor_backend_theme/static/description/assets/all_screens.png
  13. BIN
      multicolor_backend_theme/static/description/assets/banner.jpg
  14. BIN
      multicolor_backend_theme/static/description/assets/hero.gif
  15. BIN
      multicolor_backend_theme/static/description/assets/icon.png
  16. BIN
      multicolor_backend_theme/static/description/assets/icons/chevron.png
  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/design.png
  20. BIN
      multicolor_backend_theme/static/description/assets/icons/ecom-black.png
  21. BIN
      multicolor_backend_theme/static/description/assets/icons/education-black.png
  22. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/document.png
  23. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/down.png
  24. BIN
      multicolor_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png
  25. BIN
      multicolor_backend_theme/static/description/assets/icons/hotel-black.png
  26. BIN
      multicolor_backend_theme/static/description/assets/icons/license.png
  27. BIN
      multicolor_backend_theme/static/description/assets/icons/lifebuoy.png
  28. BIN
      multicolor_backend_theme/static/description/assets/icons/manufacturing-black.png
  29. BIN
      multicolor_backend_theme/static/description/assets/icons/pos-black.png
  30. BIN
      multicolor_backend_theme/static/description/assets/icons/puzzle.png
  31. BIN
      multicolor_backend_theme/static/description/assets/icons/quality.png
  32. BIN
      multicolor_backend_theme/static/description/assets/icons/responsive.png
  33. BIN
      multicolor_backend_theme/static/description/assets/icons/restaurant-black.png
  34. BIN
      multicolor_backend_theme/static/description/assets/icons/service-black.png
  35. BIN
      multicolor_backend_theme/static/description/assets/icons/trading-black.png
  36. BIN
      multicolor_backend_theme/static/description/assets/icons/training.png
  37. BIN
      multicolor_backend_theme/static/description/assets/icons/update.png
  38. BIN
      multicolor_backend_theme/static/description/assets/icons/user.png
  39. BIN
      multicolor_backend_theme/static/description/assets/icons/wrench.png
  40. BIN
      multicolor_backend_theme/static/description/assets/screenshots/access.png
  41. BIN
      multicolor_backend_theme/static/description/assets/screenshots/adv_search.png
  42. BIN
      multicolor_backend_theme/static/description/assets/screenshots/chatbot.png
  43. BIN
      multicolor_backend_theme/static/description/assets/screenshots/color_picker.png
  44. BIN
      multicolor_backend_theme/static/description/assets/screenshots/control_panel.png
  45. BIN
      multicolor_backend_theme/static/description/assets/screenshots/exp_sidebar.png
  46. BIN
      multicolor_backend_theme/static/description/assets/screenshots/form.png
  47. BIN
      multicolor_backend_theme/static/description/assets/screenshots/kanban.png
  48. BIN
      multicolor_backend_theme/static/description/assets/screenshots/login.png
  49. BIN
      multicolor_backend_theme/static/description/assets/screenshots/min_sidebar.png
  50. BIN
      multicolor_backend_theme/static/description/assets/screenshots/responsive_screenshot.png
  51. BIN
      multicolor_backend_theme/static/description/assets/screenshots/tree.png
  52. BIN
      multicolor_backend_theme/static/description/banner.jpg
  53. BIN
      multicolor_backend_theme/static/description/icon.png
  54. 679
      multicolor_backend_theme/static/description/index.html
  55. BIN
      multicolor_backend_theme/static/description/theme_screenshot.jpg
  56. 5
      multicolor_backend_theme/static/src/css/backend.css
  57. BIN
      multicolor_backend_theme/static/src/img/dashboard-header.jpg
  58. 20
      multicolor_backend_theme/static/src/js/login_page.js
  59. 75
      multicolor_backend_theme/static/src/js/search_apps.js
  60. 43
      multicolor_backend_theme/static/src/js/sidebar_menu.js
  61. 174
      multicolor_backend_theme/static/src/js/systray_item.js
  62. 197
      multicolor_backend_theme/static/src/scss/theme_style.scss
  63. 1791
      multicolor_backend_theme/static/src/scss/theme_style_backend.scss
  64. 1121
      multicolor_backend_theme/static/src/wcolpick/wcolpick.css
  65. 1028
      multicolor_backend_theme/static/src/wcolpick/wcolpick.js
  66. 87
      multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml
  67. 99
      multicolor_backend_theme/static/src/xml/systray_ext.xml
  68. 23
      multicolor_backend_theme/views/login_templates.xml

51
multicolor_backend_theme/README.rst

@ -0,0 +1,51 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
Chameleon Multi color Backend Theme
===================================
* Configurable multi color backend theme for Odoo 17,Only Admin can have the role to create, update, and removing the themes
Installation
============
- www.odoo.com/documentation/17.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html)
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:
Linto CT @ Cybrosys
Sanjith Rashin @ Cybrosys
V14 Dino @ Cybrosys
V15 Sigha Ck @ Cybrosys
V16 Sigha Ck @ Cybrosys
V17 Fouzan M @ 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
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
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>`__

23
multicolor_backend_theme/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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 controllers
from . import models

67
multicolor_backend_theme/__manifest__.py

@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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",
"summary": "Configurable multi color backend theme for Odoo 17",
"version": "17.0.1.0.0",
"category": "Themes/Backend",
"website": "https://www.cybrosys.com",
"description": """
Configurable multi color backend theme for Odoo 17,
Only Admin can have the role to create, update, and removing the themes.
""",
'images': [
'static/description/banner.jpg',
'static/description/theme_screenshot.jpg',
],
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
"depends": ['web', 'mail'],
"data": [
'security/security_groups.xml',
'security/ir.model.access.csv',
'data/theme_data.xml',
'views/login_templates.xml',
],
"assets": {
'web.assets_backend': [
'/multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml',
'/multicolor_backend_theme/static/src/xml/systray_ext.xml',
'/multicolor_backend_theme/static/src/scss/theme_style_backend.scss',
'/multicolor_backend_theme/static/src/css/backend.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/search_apps.js',
'/multicolor_backend_theme/static/src/js/systray_item.js',
],
'web.assets_frontend': [
'multicolor_backend_theme/static/src/scss/theme_style.scss',
'multicolor_backend_theme/static/src/js/login_page.js'
],
},
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

22
multicolor_backend_theme/controllers/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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

40
multicolor_backend_theme/controllers/theme_config.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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 odoo import http
from odoo.http import request
class LoginPage(http.Controller):
"""Controller for the login page. This controller provides methods for
retrieving the active theme's main color, view font color, and theme font
color and updating the theme of the login page."""
@http.route('/active_theme', auth='public', type='json')
def find_active_theme(self):
"""find the active theme for updating theme of login page"""
active_theme = request.env['theme.config'].sudo().search([
('is_theme_active', '=', True)
])
return {'id': active_theme[0].id,
'theme_main_color': active_theme[0].theme_main_color,
'view_font_color': active_theme[0].view_font_color,
'theme_font_color': active_theme[0].theme_font_color,
} if active_theme else []

26
multicolor_backend_theme/data/theme_data.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record id="theme_config_theme_1" 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="is_theme_active">true</field>
</record>
<record id="theme_config_theme_2" 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="is_theme_active">false</field>
</record>
<record id="theme_config_theme_3" 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="is_theme_active">false</field>
</record>
</data>
</odoo>

6
multicolor_backend_theme/doc/RELEASE_NOTES.md

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

22
multicolor_backend_theme/models/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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

57
multicolor_backend_theme/models/theme_config.py

@ -0,0 +1,57 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-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 odoo import api, fields, models
class ThemeConfig(models.Model):
"""Model for storing configuration settings related to the theme"""
_name = 'theme.config'
_description = "Model for storing configuration related to the theme"
name = fields.Char(help="Theme name")
theme_main_color = fields.Char(help="main theme color")
view_font_color = fields.Char(help="backend font color")
theme_font_color = fields.Char(help="backend view font color")
is_theme_active = fields.Boolean(string="Active Theme")
@api.model
def create_new_theme(self):
"""function to create a new theme"""
theme_obj = self.create({
'theme_main_color': '#6fb702',
'view_font_color': '#333',
'theme_font_color': '#fff',
'is_theme_active': False,
})
theme_obj.name = 'Theme ' + str(theme_obj.id)
return theme_obj.read(['name', 'theme_main_color', 'view_font_color',
'theme_font_color', 'is_theme_active'])
@api.model
def update_active_theme(self, theme_id):
"""function to update active theme"""
theme = {}
for record in self.search([]):
if record.is_theme_active:
theme['prev'] = record.id
record.is_theme_active = record.id == theme_id
return theme

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

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_themes_manager,themes_selection,model_theme_config,multicolor_theme_manager_access,1,1,1,1
access_themes_user,themes_selection,model_theme_config,base.group_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_themes_manager themes_selection model_theme_config multicolor_theme_manager_access 1 1 1 1
3 access_themes_user themes_selection model_theme_config base.group_user 1 0 0 0

13
multicolor_backend_theme/security/security_groups.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="multicolor_theme_module_access" model="ir.module.category" >
<field name="name">Multicolor Backend Theme </field>
<field name="description">User access levels for Theme selection</field>
<field name="sequence">10</field>
</record>
<record id="multicolor_theme_manager_access" model="res.groups">
<field name="name">Administrator</field>
<field name="category_id" ref="multicolor_theme_module_access"/>
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
</odoo>

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: 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/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/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/access.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 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: 165 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

BIN
multicolor_backend_theme/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
multicolor_backend_theme/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

679
multicolor_backend_theme/static/description/index.html

@ -0,0 +1,679 @@
<!-- 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/hero.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 17.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>
<!-- 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">
<div class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Modified Font</p>
</div>
<div 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>
</div>
<div 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>
</div>
</div>
<div class="col-lg-6">
<div 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>
</div>
<div class="d-flex">
<i class="fa fa-check-square mr-2"
style="color:#556EE6 !important; margin-top: 5px !important;"></i>
<p>Clean Layout</p>
</div>
<div 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>
</div>
</div>
</div>
</div>
<div class="col-lg-12"
style="padding-left: 0 !important; padding-right: 0!important;">
</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;">
9</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/chatbot.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;">
10</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/adv_search.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;">
11</h6>
</div>
<h6 class="mt-2 ml-2"> Only Administrator can create, update and
remove theme.
</h6>
</div>
</div>
<div class="col-lg-12"
style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/access.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;">
12</h6>
</div>
<h6 class="mt-2 ml-2"> Responsive</h6>
</div>
</div>
<div class="col-lg-12"
style="padding-left: 0 !important; padding-right: 0!important;">
<img src="assets/screenshots/responsive_screenshot.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 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 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.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

5
multicolor_backend_theme/static/src/css/backend.css

@ -0,0 +1,5 @@
:root{
--theme_main_color: #AD7B90 !default;
--theme_font_color: black !default;
--view_font_color
}

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

20
multicolor_backend_theme/static/src/js/login_page.js

@ -0,0 +1,20 @@
/** @odoo-module **/
import publicWidget from "@web/legacy/js/public/public_widget";
import { jsonrpc } from "@web/core/network/rpc_service";
publicWidget.registry.loginPage = publicWidget.Widget.extend({
selector: '.oe_login_buttons',
async start() {
var data = await jsonrpc('/active_theme')
if (data) {
this.$('.cybro-login-btn').css({
'background-color': data.theme_main_color,
'color': data.theme_font_color
});
this.$('.cybro-super-btn').css({
'color': data.view_font_color
});
}
}
})

75
multicolor_backend_theme/static/src/js/search_apps.js

@ -0,0 +1,75 @@
/** @odoo-module */
import { NavBar } from "@web/webclient/navbar/navbar";
const { fuzzyLookup } = require('@web/core/utils/search');
import { computeAppsAndMenuItems } from "@web/webclient/menus/menu_helpers";
const { onMounted } = owl;
import { patch } from "@web/core/utils/patch";
patch(NavBar.prototype, {
// For advance search bar feature, and this will enable a global search for apps and related content
setup() {
super.setup();
this._search_def = $.Deferred();
let { apps, menuItems } = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root"));
this._apps = apps;
this._searchableMenus = menuItems;
onMounted(() => this.onMounted());
},
onMounted() {
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");
},
// to show the search results
_searchMenusSchedule() {
console.log('_searchMenusSchedule')
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));
},
// function for searching all apps and content
_searchMenus() {
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;
}
// search for all apps
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,
});
});
// search for all content
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));
var resultsHtml = ""
results.forEach(function(result) {
resultsHtml += "<p class='search-items'><a href='web#action=" + result["actionID"] + "&menu_id=" + result["id"] + "'>" + result["name"] + "</a></p>"
})
this.$search_results.empty().append(resultsHtml)
},
});

43
multicolor_backend_theme/static/src/js/sidebar_menu.js

@ -0,0 +1,43 @@
/** @odoo-module **/
import { NavBar } from "@web/webclient/navbar/navbar";
import { patch } from "@web/core/utils/patch";
patch(NavBar.prototype, {
onclickOpenSidebar(){
$("#openSidebar").hide();
$("#closeSidebar").show();
$("#sidebar_panel").css({'display':'block'});
//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");
},
onclickCloseSidebar(){
$("#closeSidebar").hide();
$("#openSidebar").show();
$("#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");
},
});

174
multicolor_backend_theme/static/src/js/systray_item.js

@ -0,0 +1,174 @@
/** @odoo-module **/
import { NavBar } from "@web/webclient/navbar/navbar";
import { patch } from "@web/core/utils/patch";
import { useService } from "@web/core/utils/hooks";
import { useState, onWillStart} from "@odoo/owl";
patch(NavBar.prototype, {
setup(...args) {
super.setup(...args);
this.state = useState({
theme_data: {},
selected_theme: {}
});
this.editMode = false;
this.orm = useService("orm");
this.notification = useService('notification');
this.current_theme = {};
this.themes_by_id = {};
this.user = useService("user");
onWillStart(async () => {
var self = this;
this.user = await this.user.hasGroup("multicolor_backend_theme.multicolor_theme_manager_access");
const theme_data = await this.orm.searchRead('theme.config', [], ['name', 'is_theme_active', 'theme_font_color', 'theme_main_color', 'view_font_color']);
return $.when(theme_data).then((theme_data) => {
self.state.theme_data = theme_data;
theme_data.forEach(theme => {
if (theme.is_theme_active) {
self.selected_theme = theme;
}
self.themes_by_id[theme.id] = theme;
})
if (!self.selected_theme) {
self.selected_theme = theme_data[0];
self.selected_theme.is_theme_active = true;
}
self.state.selected_theme = self.selected_theme;
self.onClickApply();
});
});
},
// Handle the onChange event for selecting a theme.
onChangeTheme() {
let themeId = parseInt($('.theme_select').val());
this.state.selected_theme = this.themes_by_id[themeId];
const colorProperties = ['theme_main_color', 'theme_font_color', 'view_font_color'];
colorProperties.forEach(property => {
document.getElementById(property).style.backgroundColor = this.state.selected_theme[property];
});
this.onChangeActive();
},
// Handle the event for selecting base color.
onClickBaseColor(){
var self = this;
const selectedTheme = this.themes_by_id[parseInt($('.theme_select').val())]
const colorProperties = ['theme_main_color', 'theme_font_color', 'view_font_color'];
colorProperties.forEach(property => {
$('#' + property).loads({
layout: 'hex',
flat: false,
enableAlpha: false,
color: self.selected_theme.property,
onSubmit: function(ev) {
let elId = $(ev.el).attr('id');
$('#' + elId).css('background-color', '#' + ev.hex);
$('#' + elId).val("#" + ev.hex);
$('#' + elId).hides();
self._onchangeColor($(ev.el), ev.hex);
},
onLoaded: function(ev) {
$('.picker').css('color', 'green');
},
onChange: function(ev) {
let elId = $(ev.el).attr('id');
$('#' + elId).setColor(ev.hex, false);
}
});
})
},
// Function to update color on backend.
_onchangeColor(element, data) {
let current_theme = this.themes_by_id[$('.theme_select').val()];
let colorCode = '#' + data;
if (colorCode != current_theme[element.attr('id')]) {
current_theme[element.attr('id')] = colorCode;
this.themes_by_id[current_theme.id][element.attr('id')] = '#' + data;
let field = element.attr('id');
this.orm.write('theme.config', [current_theme.id], {
[field]: colorCode,
});
};
},
// Handle the onClick event for applying the selected theme.
async onClickApply(){
if (this.state.selected_theme) {
this.appliedTheme = this.state.selected_theme;
document.documentElement.style.setProperty("--theme_main_color", this.state.selected_theme.theme_main_color);
document.documentElement.style.setProperty("--theme_font_color", this.state.selected_theme.theme_font_color);
document.documentElement.style.setProperty("--view_font_color", this.state.selected_theme.view_font_color);
$('.cybro-main-menu .input-group-text').css({
'background-color': this.state.selected_theme.theme_main_color,
'border-color': this.state.selected_theme.theme_main_color,
'color': this.state.selected_theme.theme_font_color,
});
$('.o_loading').css({
'background-color': this.state.selected_theme.theme_main_color,
'color': this.state.selected_theme.theme_font_color,
});
$('.btn-primary').css({
'background-color': this.state.selected_theme.theme_main_color,
'color': this.state.selected_theme.theme_font_color,
});
}
let curr_theme_id = parseInt($('.theme_select').val());
if (curr_theme_id){
let result = await this.orm.call('theme.config','update_active_theme',[curr_theme_id]);
this.themes_by_id[result['prev']].is_theme_active = false;
this.themes_by_id[curr_theme_id].is_theme_active = true;
this.onChangeActive();
this.notification.add("Theme has been successfully updated",
{ type: 'success' }, 3000
);
};
},
// Handle the onClick event for creating new theme.
async onClickCreate(){
let result = await this.orm.call('theme.config', 'create_new_theme',[]);
this.state.selected_theme = result[0];
this.state.theme_data.push(result[0]);
this.themes_by_id[result[0].id] = result[0];
this.onChangeActive();
},
// Handle the onClick event for deleting theme.
async onClickRemove(){
let themeId = parseInt($('.theme_select').val());
let currentTheme = this.themes_by_id[themeId];
if (currentTheme.is_theme_active) {
this.notification.add("You cannot delete an active theme.",
{ type: 'danger' }, 3000
);
} else {
this.orm.unlink('theme.config', [themeId]);
this.state.theme_data = this.state.theme_data.filter(data => data.id !== themeId);
this.state.selected_theme = this.appliedTheme;
};
this.onChangeActive();
},
// Function to edit name of theme.
async onEditName() {
this.editMode = !this.editMode;
let themeInput = document.getElementById('themeName');
let editIcon = document.getElementById('editIcon');
if (this.editMode) {
themeInput.removeAttribute('readonly');
themeInput.style.backgroundColor = '#e4eaec';
editIcon.classList.remove('fa-pencil');
editIcon.classList.add('fa-check');
} else {
themeInput.setAttribute('readonly', 'readonly');
themeInput.style.backgroundColor = 'white';
editIcon.classList.remove('fa-check');
editIcon.classList.add('fa-pencil');
this.orm.write('theme.config', [this.state.selected_theme.id] , {
name: themeInput.value
});
this.state.selected_theme.name = themeInput.value;
this.themes_by_id[this.state.selected_theme.id].name = themeInput.value;
};
},
// Function to set active selected theme.
onChangeActive() {
document.getElementById('active_theme').style.display = this.state.selected_theme.is_theme_active ? 'block' : 'none';
},
});

197
multicolor_backend_theme/static/src/scss/theme_style.scss

@ -0,0 +1,197 @@
@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 {
position: relative;
background: #ffffff;
}
.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================*/

1791
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

87
multicolor_backend_theme/static/src/xml/sidebar_menu_icon.xml

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<!-- Advanced sidebar view-->
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1">
<xpath expr="//nav[hasclass('o_main_navbar')]" position="after">
<div class="cybro-sidebar-qweb">
<div class="sidebar-menus" role="menu">
<t t-foreach="menuService.getApps()" t-as="app"
t-key="app_index">
<a t-attf-href="#menu_id={{app.id}}">
<img t-if="app.webIcon.includes('.png')"
t-att-title="app.name"
style="width: 40px !important;height: 40px !important; border-radius: 10px !important;margin: 5px 5px 5px 5px;"
t-attf-src="data:image/png;base64,{{app.webIconData}}"/>
<img t-if="app.webIcon.includes('.svg')"
t-att-title="app.name"
style="width: 40px !important;height: 40px !important; border-radius: 10px !important;margin: 5px 5px 5px 5px;"
t-attf-src="data:image/svg+xml;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;"/>
</div>
<div class="search-container form-row align-items-center m-auto col-12">
<div class="search-input col-md-12 ml-auto mr-auto"
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-12 ml-auto mr-auto" t-on-click="onclickCloseSidebar"/>
</div>
<ul class="sidebar_menu">
<t t-foreach="menuService.getApps()" t-as="app"
t-key="app_index">
<li>
<a role="menuitem"
t-attf-href="#menu_id={{app.id}}"
class="dropdown-item o_app mt0"
t-att-data-menu-id="app.menuID"
t-att-data-menu-xmlid="app.xmlID"
t-att-data-action-id="app.actionID">
<img t-if="app.webIcon.includes('.png')"
t-att-title="app.name"
style="width: 40px !important;height: 40px !important;
border-radius: 10px !important;margin: 5px 5px 5px 5px;"
t-attf-src="data:image/png;base64,{{app.webIconData}}"/>
<img t-if="app.webIcon.includes('.svg')"
t-att-title="app.name"
style="width: 40px !important;height: 40px !important;
border-radius: 10px !important;margin: 5px 5px 5px 5px;"
t-attf-src="data:image/svg+xml;base64,{{app.webIconData}}"/>
<b class="a_app_menu_title"><t t-esc="app.name"/></b>
</a>
</li>
</t>
</ul>
</div>
</div>
</xpath>
</t>
<!-- Toggle icon for Advanced sidebar-->
<t t-inherit="web.NavBar.AppsMenu" t-inherit-mode="extension" owl="1">
<xpath expr="//Dropdown" position="replace">
<li class="dropdown">
<a id="openSidebar" style="display: block; cursor: pointer; margin-left: 10px;">
<i class="fa fa-bars fa-lg" t-on-click="onclickOpenSidebar"/>
</a>
<a id="closeSidebar" style="display: none; cursor: pointer; margin-left: 10px;">
<i class="fa fa-close fa-lg" t-on-click="onclickCloseSidebar"/>
</a>
</li>
</xpath>
</t>
</templates>

99
multicolor_backend_theme/static/src/xml/systray_ext.xml

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<!-- Systray view-->
<t t-inherit="web.NavBar" t-inherit-mode="extension">
<xpath expr="//div[@class='o_menu_systray d-flex flex-shrink-0 ms-auto']//t[@t-foreach='systrayItems']" position="before">
<Dropdown>
<t t-set-slot="toggler">
<a data-display="static" aria-expanded="false" title="Themes"
role="button">
<t t-if="user">
<i class="fa fa-paint-brush" role="img"
aria-label="Themes Configuration" />
</t>
</a>
</t>
<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-on-change="onChangeTheme">
<t t-foreach="state.theme_data"
t-as="theme_data_id" t-key="theme_data_id.id">
<option t-att-id="theme_data_id.id" t-att-value="theme_data_id.id"
t-att-selected="theme_data_id.id === state.selected_theme.id">
<span t-esc="theme_data_id.name"/>
</option>
</t>
</select>
</div>
</div>
<div class="theme_data">
<div class="row name">
<div class="cell">
<p>Name</p>
</div>
<div class="cell">
<input type="text"
id="themeName"
readonly="readonly"
t-att-value="state.selected_theme.name"/>
<i id="editIcon" class="fa fa-pencil" t-on-click="onEditName"/>
</div>
</div>
<div class="theme_extra">
<div id="active_theme" class="theme-active">
<p>Active</p>
</div>
</div>
<!-- Color selector -->
<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-on-click="onClickBaseColor"
t-att-style="'background-color:'+state.selected_theme.theme_main_color">
</div>
</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-on-click="onClickBaseColor"
t-att-style="'background-color:'+state.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-on-click="onClickBaseColor"
t-att-style="'background-color:'+state.selected_theme.view_font_color"/>
</div>
</div>
</div>
</div>
</div>
<!--View for Theme create, remove and apply buttons-->
<div class="header_buttons row" style="position: absolute; bottom: 0;">
<div class="button-create cell">
<p t-on-click="onClickCreate">Create</p>
</div>
<div class="button-create cell">
<p t-on-click="onClickRemove">Remove</p>
</div>
<div class="button-create cell">
<p t-on-click="onClickApply"><i class="fa fa-check"/>Apply</p>
</div>
</div>
</div>
</Dropdown>
</xpath>
</t>
</templates>

23
multicolor_backend_theme/views/login_templates.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Login page view-->
<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="webclient_bootstrap_ext" inherit_id="web.webclient_bootstrap">
<xpath expr="//t[@t-set='head']" position="after">
<div class="cybro-sidebar"/>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save