Browse Source

Nov 28 [ADD] : Initial Commit 'backend_theme_infinito'

pull/221/merge
AjmalCybro 2 years ago
parent
commit
a0f100d385
  1. 41
      backend_theme_infinito/README.rst
  2. 24
      backend_theme_infinito/__init__.py
  3. 96
      backend_theme_infinito/__manifest__.py
  4. 23
      backend_theme_infinito/controllers/__init__.py
  5. 55
      backend_theme_infinito/controllers/base_pwa.py
  6. 232
      backend_theme_infinito/controllers/main.py
  7. 7
      backend_theme_infinito/doc/RELEASE_NOTES.md
  8. 158
      backend_theme_infinito/icon_hooks.py
  9. 26
      backend_theme_infinito/models/__init__.py
  10. 99
      backend_theme_infinito/models/ir_http.py
  11. 32
      backend_theme_infinito/models/menu_bookmark.py
  12. 40
      backend_theme_infinito/models/recent_apps.py
  13. 109
      backend_theme_infinito/models/res_config_settings.py
  14. 50
      backend_theme_infinito/models/res_users.py
  15. BIN
      backend_theme_infinito/static/description/assets/hero.png
  16. BIN
      backend_theme_infinito/static/description/assets/icons/check.png
  17. BIN
      backend_theme_infinito/static/description/assets/icons/chevron.png
  18. BIN
      backend_theme_infinito/static/description/assets/icons/cogs.png
  19. BIN
      backend_theme_infinito/static/description/assets/icons/consultation.png
  20. BIN
      backend_theme_infinito/static/description/assets/icons/ecom-black.png
  21. BIN
      backend_theme_infinito/static/description/assets/icons/education-black.png
  22. BIN
      backend_theme_infinito/static/description/assets/icons/hotel-black.png
  23. BIN
      backend_theme_infinito/static/description/assets/icons/license.png
  24. BIN
      backend_theme_infinito/static/description/assets/icons/lifebuoy.png
  25. BIN
      backend_theme_infinito/static/description/assets/icons/manufacturing-black.png
  26. BIN
      backend_theme_infinito/static/description/assets/icons/pos-black.png
  27. BIN
      backend_theme_infinito/static/description/assets/icons/puzzle.png
  28. BIN
      backend_theme_infinito/static/description/assets/icons/restaurant-black.png
  29. BIN
      backend_theme_infinito/static/description/assets/icons/service-black.png
  30. BIN
      backend_theme_infinito/static/description/assets/icons/trading-black.png
  31. BIN
      backend_theme_infinito/static/description/assets/icons/training.png
  32. BIN
      backend_theme_infinito/static/description/assets/icons/update.png
  33. BIN
      backend_theme_infinito/static/description/assets/icons/user.png
  34. BIN
      backend_theme_infinito/static/description/assets/icons/wrench.png
  35. BIN
      backend_theme_infinito/static/description/assets/screenshots/bookmark.jpg
  36. BIN
      backend_theme_infinito/static/description/assets/screenshots/calendar.jpg
  37. BIN
      backend_theme_infinito/static/description/assets/screenshots/discuss.jpg
  38. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/adv_button.gif
  39. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/adv_list.gif
  40. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/animation.gif
  41. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/app_bar.gif
  42. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/bookmark.gif
  43. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/dark_mode.gif
  44. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/hover_nav.gif
  45. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/preloader.gif
  46. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/recent_apps.gif
  47. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/rtl.gif
  48. BIN
      backend_theme_infinito/static/description/assets/screenshots/gif/side_bar.gif
  49. BIN
      backend_theme_infinito/static/description/assets/screenshots/infinito_adv.jpg
  50. BIN
      backend_theme_infinito/static/description/assets/screenshots/infinito_landing.jpg
  51. BIN
      backend_theme_infinito/static/description/assets/screenshots/infinito_styles.jpg
  52. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban-1.jpg
  53. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban-grp.png
  54. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban-img.png
  55. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban.jpg
  56. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban.png
  57. BIN
      backend_theme_infinito/static/description/assets/screenshots/kanban_grp.jpg
  58. BIN
      backend_theme_infinito/static/description/assets/screenshots/list.jpg
  59. BIN
      backend_theme_infinito/static/description/assets/screenshots/list_group.jpg
  60. BIN
      backend_theme_infinito/static/description/assets/screenshots/resp-app_bar.gif
  61. BIN
      backend_theme_infinito/static/description/assets/screenshots/resp-sidebar.gif
  62. BIN
      backend_theme_infinito/static/description/assets/screenshots/sidebar-list.jpg
  63. BIN
      backend_theme_infinito/static/description/assets/screenshots/sidebar-small.jpg
  64. BIN
      backend_theme_infinito/static/description/assets/screenshots/sidebar.jpg
  65. BIN
      backend_theme_infinito/static/description/assets/screenshots/user_edit.jpg
  66. BIN
      backend_theme_infinito/static/description/banner.png
  67. BIN
      backend_theme_infinito/static/description/icon.png
  68. 1106
      backend_theme_infinito/static/description/index.html
  69. BIN
      backend_theme_infinito/static/description/theme_screenshot.png
  70. 0
      backend_theme_infinito/static/src/css/dynamic_styles.css
  71. 34
      backend_theme_infinito/static/src/css/layout.css
  72. 128
      backend_theme_infinito/static/src/css/loaders.css
  73. 1460
      backend_theme_infinito/static/src/css/style.css
  74. 1198
      backend_theme_infinito/static/src/css/style2.css
  75. 1
      backend_theme_infinito/static/src/img/alignment/align-objects.svg
  76. 6
      backend_theme_infinito/static/src/img/alignment/align-right.svg
  77. 49
      backend_theme_infinito/static/src/img/alignment/center-align.svg
  78. 55
      backend_theme_infinito/static/src/img/alignment/justification (1).svg
  79. 55
      backend_theme_infinito/static/src/img/alignment/left-align.svg
  80. 55
      backend_theme_infinito/static/src/img/alignment/right-align.svg
  81. 8
      backend_theme_infinito/static/src/img/alignment/top-alignment.svg
  82. 2
      backend_theme_infinito/static/src/img/brand_icon/infinity.svg
  83. 86
      backend_theme_infinito/static/src/img/brightness.svg
  84. BIN
      backend_theme_infinito/static/src/img/center-align.png
  85. 0
      backend_theme_infinito/static/src/img/centered-text-of-alignment-button.png
  86. BIN
      backend_theme_infinito/static/src/img/close.png
  87. BIN
      backend_theme_infinito/static/src/img/color_picker/color-picker.png
  88. 1
      backend_theme_infinito/static/src/img/downward-arrow.svg
  89. 1
      backend_theme_infinito/static/src/img/eyedropper.svg
  90. 1
      backend_theme_infinito/static/src/img/gear.svg
  91. BIN
      backend_theme_infinito/static/src/img/icons/apps.png
  92. BIN
      backend_theme_infinito/static/src/img/icons/attendance.png
  93. BIN
      backend_theme_infinito/static/src/img/icons/calendar.png
  94. BIN
      backend_theme_infinito/static/src/img/icons/contact.png
  95. BIN
      backend_theme_infinito/static/src/img/icons/crm.png
  96. BIN
      backend_theme_infinito/static/src/img/icons/dashboard.png
  97. BIN
      backend_theme_infinito/static/src/img/icons/discuss.png
  98. BIN
      backend_theme_infinito/static/src/img/icons/elearning.png
  99. BIN
      backend_theme_infinito/static/src/img/icons/employees.png
  100. BIN
      backend_theme_infinito/static/src/img/icons/events.png

41
backend_theme_infinito/README.rst

@ -0,0 +1,41 @@
Backend Theme Infinito
=======================
* Backend Theme Infinito module for Odoo 16 community editions
Installation
============
- www.odoo.com/documentation/16.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html)
Company
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
Credits
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
Author : Farseen, Musthafa @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
backend_theme_infinito/__init__.py

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

96
backend_theme_infinito/__manifest__.py

@ -0,0 +1,96 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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": "Infinito Backend Theme",
"description": """Utmost and dynamic backend theme for Odoo 16""",
"summary": """The Backend Theme Infinito Is A Dynamic And Ultimate Theme
For Your Odoo V16. This Theme Will Give You A New Experience With Odoo.
Main Highlight Of The Theme Is You Can Dynamically Change The Colors,
Views, Buttons, Different Types Sidebar...Etc""",
"category": "Themes/Backend",
"version": "16.0.1.0.0",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
"depends": ['web', 'mail'],
"data": [
'views/assets.xml',
'views/layout.xml',
'views/base_pwa.xml',
'views/icons.xml',
],
'assets': {
'web._assets_primary_variables': {
'backend_theme_infinito/static/src/scss/theme_variables.scss',
},
'web.assets_backend': {
'/backend_theme_infinito/static/src/xml/systray.xml',
'/backend_theme_infinito/static/src/xml/views.xml',
'/backend_theme_infinito/static/src/xml/theme_editor.xml',
'/backend_theme_infinito/static/src/xml/studio_elements.xml',
'/backend_theme_infinito/static/src/xml/ThemeStudioMenu.xml',
'/backend_theme_infinito/static/src/xml/style_add.xml',
'/backend_theme_infinito/static/src/xml/sidebar.xml',
'/backend_theme_infinito/static/src/xml/MenuBookmark.xml',
'https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap',
'/backend_theme_infinito/static/src/css/style.css',
'/backend_theme_infinito/static/src/css/loaders.css',
'backend_theme_infinito/static/src/scss/sidebar.scss',
'backend_theme_infinito/static/src/scss/responsive.scss',
'backend_theme_infinito/static/src/scss/theme_date_picker.scss',
'backend_theme_infinito/static/src/scss/theme_styles.scss',
'backend_theme_infinito/static/src/scss/theme_rtl.scss',
'backend_theme_infinito/static/src/scss/app_menu.scss',
'backend_theme_infinito/static/src/scss/extra_styles.scss',
'backend_theme_infinito/static/src/scss/views.scss',
'/backend_theme_infinito/static/src/js/systray.js',
'/backend_theme_infinito/static/src/js/loaders.js',
'/backend_theme_infinito/static/src/js/theme_editor.js',
'/backend_theme_infinito/static/src/js/ThemeStudioWidget.js',
'/backend_theme_infinito/static/src/js/Tool.js',
'/backend_theme_infinito/static/src/js/VisualEditor.js',
'/backend_theme_infinito/static/src/js/change.js',
'/backend_theme_infinito/static/src/js/style_add.js',
'/backend_theme_infinito/static/src/js/sidebar.js',
'/backend_theme_infinito/static/src/js/navbar.js',
'/backend_theme_infinito/static/src/js/theme_editor_sidebar.js',
'/backend_theme_infinito/static/src/js/recentApps.js',
'/backend_theme_infinito/static/src/js/timepicker.js',
'/backend_theme_infinito/static/src/js/MenuBookmark.js',
'/backend_theme_infinito/static/src/js/AdvancedFeautres.js',
'/backend_theme_infinito/static/src/js/theme_studio_action.js',
'/backend_theme_infinito/static/src/js/ThemeStudioMenu.js',
'/backend_theme_infinito/static/src/js/variables.js',
},
},
'post_init_hook': 'icons_post_init_hook',
'images': [
'static/description/banner.png',
'static/description/theme_screenshot.png',
],
'license': 'LGPL-3',
'installable': True,
'application': False,
'auto_install': False,
}

23
backend_theme_infinito/controllers/__init__.py

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

55
backend_theme_infinito/controllers/base_pwa.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 BasePwa(http.Controller):
def pwa_data(self):
# pwa_enable = request.env[
# "ir.config_parameter"].sudo().get_param(
# "base_pwa.pwa_enable")
# if pwa_enable:
return {
'short_name': 'Odoo',
'name': 'Odoo-infinito',
'description': 'PWA provided by backend theme infinito',
'icons': [
{
'src': '/backend_theme_infinito/static/src/img/menu.png',
'type': 'image/png',
'sizes': '144x144',
'purpose': 'any maskable'
},
],
'start_url': 'http://cybrosys:8015/web',
'background_color': 'white',
'display': 'standalone',
'theme_color': 'white',
}
@http.route('/manifest/webmanifest', type='http',
auth='public', website=True, sitemap=False)
def base_pwa_data(self):
return request.make_response(json.dumps(self.pwa_data()),
headers=[('Content-Type', 'application/json;charset=utf-8')])

232
backend_theme_infinito/controllers/main.py

@ -0,0 +1,232 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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
import os
import re
from odoo import http
from odoo.http import request
def minify_css(path):
"""Minify css string"""
with open(path, 'r') as f:
css = f.read()
css = re.sub(r'/\*[\s\S]*?\*/', "", css)
css = re.sub(r'url\((["\'])([^)]*)\1\)', r'url(\2)', css)
css = re.sub(r'\s+', ' ', css)
css = re.sub(r'#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3(\s|;)', r'#\1\2\3\4',
css)
css = re.sub(r':\s*0(\.\d+([cm]m|e[mx]|in|p[ctx]))\s*;', r':\1;', css)
rules = re.findall(r'([^{]+){([^}]*)}', css)
selectors_list = []
css_values = {}
for rule in rules:
selector = rule[0]
content = rule[1]
if selector not in selectors_list:
selectors_list.append(selector)
css_values[selector] = content
else:
css_values[selector] = css_values[selector] + content
with open(path, 'w') as f:
selector_dict = {}
for selector in selectors_list:
rule = css_values[selector].split(';')
dict_rule = {}
for r in rule:
if r:
split_rule = r.split(':')
if len(split_rule) == 2:
dict_rule[split_rule[0].strip()] = split_rule[1]
selector_dict[selector] = dict_rule
f.write('/* This Styles are generated automatically by Theme Studio'
' */\n')
for selector in selector_dict:
f.write(selector + '{')
for rule_data in selector_dict[selector]:
if rule_data != 'pointer-events':
if selector_dict[selector][rule_data].find(
'!important') == -1:
f.write(rule_data + ':' +
selector_dict[selector][rule_data] +
' !important;')
else:
f.write(rule_data + ':' +
selector_dict[selector][rule_data] + ';')
f.write('}')
class ThemeStudio(http.Controller):
@http.route(['/theme_studio/save_styles'], type="json")
def save_styles(self, changed_styles, object_class, hover=False):
"""Create Dynamic Styles css file"""
changed_styles = json.loads(changed_styles)
working_dir = os.path.dirname(os.path.realpath(__file__))
working_dir = working_dir.replace('/controllers', '')
file_path = working_dir + '/static/src/css/dynamic_styles.css'
style_file = open(file_path, 'a')
if os.stat(file_path).st_size == 0:
style_file.write('/* This file is generated automatically by '
'Theme Infinito */\n')
style_file.write('\n.' + object_class + ':hover {\n') if hover else \
style_file.write('\n.' + object_class + ' {\n')
for style in changed_styles:
style_file.write(
'\t' + style + ': ' + changed_styles[style] + ';\n')
style_file.write('}\n')
style_file.close()
minify_css(file_path)
return True
@http.route(['/theme_studio/get_current_style'], type="json")
def get_current_style(self, selector):
working_dir = os.path.dirname(os.path.realpath(__file__))
file_path = working_dir.replace('controllers',
'static/src/css/dynamic_styles.css')
style_file = open(file_path, 'r')
css = style_file.read()
css = re.sub(r'/\*[\s\S]*?\*/', "", css)
css = re.sub(r'url\((["\'])([^)]*)\1\)', r'url(\2)', css)
css = re.sub(r'\s+', ' ', css)
css = re.sub(r'#([0-9a-f])\1([\da-f])\2([0-9a-f])\3(\s|;)',
r'#\1\2\3\4', css)
css = re.sub(r':\s*0(\.\d+([cm]m|e[mx]|in|p[ctx]))\s*;', r':\1;', css)
rules = re.findall(r'([^{]+){([^}]*)}', css)
for rule in rules:
selector_now = rule[0]
content = rule[1]
if selector == selector_now.strip():
contents = content.split(';')
content = []
for c in contents:
c = c.split(':')
if c[0] != '' and len(c) > 1:
content.append([c[0], c[1].strip().replace('!important', '')])
return content
return False
@http.route(['/theme_studio/reset_to_default'], type="json")
def reset_to_default(self):
working_dir = os.path.dirname(os.path.realpath(__file__))
file_path = working_dir.replace('controllers',
'static/src/css/dynamic_styles.css')
style_file = open(file_path, 'w')
style_file.write('')
return True
@http.route(['/theme_studio/set_advanced_data'], type="json")
def set_advanced_data(self, vals):
set_param = request.env['ir.config_parameter'].sudo().set_param
set_param('backend_theme_infinito.is_user_edit', vals['userEdit'])
set_param('backend_theme_infinito.is_sidebar_enabled', vals['sidebar'])
set_param('backend_theme_infinito.is_fullscreen_enabled', vals['fullscreen'])
set_param('backend_theme_infinito.is_sidebar_icon', vals['sidebarIcon'])
set_param('backend_theme_infinito.is_sidebar_name', vals['sidebarName'])
set_param('backend_theme_infinito.is_sidebar_company', vals['sidebarCompany'])
set_param('backend_theme_infinito.is_sidebar_user', vals['sidebarUser'])
set_param('backend_theme_infinito.is_recent_apps', vals['recentApps'])
set_param('backend_theme_infinito.is_fullscreen_app', vals['fullScreenApp'])
set_param('backend_theme_infinito.is_rtl', vals['infinitoRtl'])
set_param('backend_theme_infinito.is_dark', vals['infinitoDark'])
set_param('backend_theme_infinito.dark_mode', vals['infinitoDarkMode'])
set_param('backend_theme_infinito.dark_start', vals['infinitoDarkStart'])
set_param('backend_theme_infinito.dark_end', vals['infinitoDarkEnd'])
set_param('backend_theme_infinito.is_menu_bookmark', vals['infinitoBookmark'])
set_param('backend_theme_infinito.is_chameleon', vals['infinitoChameleon'])
@http.route(['/theme_studio/set_advanced_data_user'], type="json")
def set_advanced_data_user(self, vals):
request.env.user.write({
'is_sidebar_enabled': vals['sidebar'],
'is_fullscreen_enabled': vals['fullscreen'],
'is_sidebar_icon': vals['sidebarIcon'],
'is_sidebar_name': vals['sidebarName'],
'is_sidebar_company': vals['sidebarCompany'],
'is_sidebar_user': vals['sidebarUser'],
'is_recent_apps': vals['recentApps'],
'is_fullscreen_app': vals['fullScreenApp'],
'is_rtl': vals['infinitoRtl'],
'is_dark': vals['infinitoDark'],
'dark_mode': vals['infinitoDarkMode'],
'dark_start': vals['infinitoDarkStart'],
'dark_end': vals['infinitoDarkEnd'],
'is_menu_bookmark': vals['infinitoBookmark'],
'loader_class': vals['loaderClass'],
'is_chameleon': vals['infinitoChameleon'],
})
return True
@http.route(['/theme_studio/add_recent_app'], type="json")
def add_recent_app(self, app):
recent_app = request.env['recent.apps'].sudo()
exist = recent_app.search([
('app_id', '=', int(app.get('appId'))),
('user_id', '=', request.env.user.id)
])
exist.unlink() if exist else None
total_recent = recent_app.search([('user_id', '=', request.env.user.id)])
if len(total_recent) > 4:
total_recent[0].unlink()
recent_app.create({
'app_id': int(app.get('appId')),
'user_id': request.env.user.id
})
@http.route(['/theme_studio/get_recent_apps'], type="json")
def get_recent_apps(self):
recent_app = request.env['recent.apps'].sudo()
return recent_app.search_read([
('user_id', '=', request.env.user.id)
])
@http.route(['/theme_studio/add_menu_bookmarks'], type="json")
def add_menu_bookmarks(self, menu):
menu_bookmark = request.env['infinito.menu.bookmark'].sudo()
menu_bookmark.create({
'action_id': int(menu.get('actionId')),
'user_id': request.env.user.id,
'url': menu.get('menuUrl'),
})
@http.route(['/theme_studio/remove_menu_bookmarks'], type="json")
def remove_menu_bookmarks(self, menu):
menu_bookmark = request.env['infinito.menu.bookmark'].sudo().search([
('action_id', '=', int(menu.get('actionId'))),
('user_id', '=', request.env.user.id)
])
if menu_bookmark:
menu_bookmark.unlink()
@http.route(['/theme_studio/get_presets'], type="json")
def get_presets(self):
working_dir = os.path.dirname(os.path.realpath(__file__))
working_dir = working_dir.replace('/controllers', '')
file_path = working_dir + '/static/src/json/presets.json'
file = open(file_path, 'r')
presets = json.load(file)
return presets

7
backend_theme_infinito/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <backend_theme_infinito>
#### 23.11.2022
#### Version 16.0.1.0.0
#### ADD
Initial Commit

158
backend_theme_infinito/icon_hooks.py

@ -0,0 +1,158 @@
"""Hooks for Changing Menu Web_icon"""
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 base64
from odoo import api, SUPERUSER_ID
from odoo.modules import get_module_resource
def icons_post_init_hook(cr, registry):
"""post init hook for changing module icons"""
env = api.Environment(cr, SUPERUSER_ID, {})
menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)])
for menu in menu_item:
if menu.name == 'Contacts':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'contact.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Link Tracker':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'link-tracker.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Dashboards':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'dashboard.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Sales':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'sales.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Invoicing':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'invoice.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Inventory':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'inventory.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Purchase':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'purchase.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Calendar':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'calendar.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'CRM':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'crm.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Notes':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'notes.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Website':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'website.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Point of Sale':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'pos.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Manufacturing':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'manufacturing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Repairs':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'repairs.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Email Marketing':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'marketing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'SMS Marketing':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'sms-marketing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Project':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'project.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Surveys':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'surveys.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Employees':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'employees.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Recruitment':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'recruitment.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Attendances':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'attendance.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Time Off':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'time-off.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Expenses':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'expense.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Maintenance':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'maintenance.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Live Chat':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'live-chat.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Lunch':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'lunch.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Fleet':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'fleet.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Timesheets':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'timesheets.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Events':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'events.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'eLearning':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'elearning.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Members':
img_path = get_module_resource(
'backend_theme_infinito', 'static', 'src', 'img', 'icons', 'members.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})

26
backend_theme_infinito/models/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 res_config_settings
from . import res_users
from . import ir_http
from . import recent_apps
from . import menu_bookmark

99
backend_theme_infinito/models/ir_http.py

@ -0,0 +1,99 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 models
def float_to_time(time):
return '{0:02.0f}:{1:02.0f}'.format(*divmod(float(time) * 60, 60))
class IrHttp(models.AbstractModel):
_inherit = 'ir.http'
def session_info(self):
res = super(IrHttp, self).session_info()
get_param = self.env['ir.config_parameter'].sudo().get_param
if self.env.user.has_group('base.group_user'):
user_edit = get_param(
'backend_theme_infinito.is_user_edit', default=False)
res['userEdit'] = user_edit
if user_edit:
res['sidebar'] = self.env.user.is_sidebar_enabled
res['fullscreen'] = self.env.user.is_fullscreen_enabled
res['sidebarIcon'] = self.env.user.is_sidebar_icon
res['sidebarName'] = self.env.user.is_sidebar_name
res['sidebarCompany'] = self.env.user.is_sidebar_company
res['sidebarUser'] = self.env.user.is_sidebar_user
res['recentApps'] = self.env.user.is_recent_apps
res['fullScreenApp'] = self.env.user.is_fullscreen_app
res['infinitoRtl'] = self.env.user.is_rtl
res['infinitoDark'] = self.env.user.is_dark
res['infinitoDarkMode'] = self.env.user.dark_mode
res['infinitoDarkStart'] = float_to_time(self.env.user.dark_start)
res['infinitoDarkEnd'] = float_to_time(self.env.user.dark_end)
res['infinitoBookmark'] = self.env.user.is_menu_bookmark
res['loaderClass'] = self.env.user.loader_class
res['infinitoChameleon'] = self.env.user.is_chameleon
else:
res['sidebar'] = get_param(
'backend_theme_infinito.is_sidebar_enabled', default=False)
res['fullscreen'] = get_param(
'backend_theme_infinito.is_fullscreen_enabled', default=False)
res['sidebarIcon'] = get_param(
'backend_theme_infinito.is_sidebar_icon', default=False)
res['sidebarName'] = get_param(
'backend_theme_infinito.is_sidebar_name', default=False)
res['sidebarCompany'] = get_param(
'backend_theme_infinito.is_sidebar_company', default=False)
res['sidebarUser'] = get_param(
'backend_theme_infinito.is_sidebar_user', default=False)
res['recentApps'] = get_param(
'backend_theme_infinito.is_recent_apps', default=False)
res['fullScreenApp'] = get_param(
'backend_theme_infinito.is_fullscreen_app', default=False)
res['infinitoRtl'] = get_param(
'backend_theme_infinito.is_rtl', default=False)
res['infinitoDark'] = get_param(
'backend_theme_infinito.is_dark', default=False)
res['infinitoDarkMode'] = get_param(
'backend_theme_infinito.dark_mode', default=False)
res['infinitoDarkStart'] = float_to_time(get_param(
'backend_theme_infinito.dark_start', default=19.0))
res['infinitoDarkEnd'] = float_to_time(get_param(
'backend_theme_infinito.dark_end', default=5.0))
res['infinitoBookmark'] = get_param(
'backend_theme_infinito.is_menu_bookmark', default=False)
res['loaderClass'] = get_param(
'backend_theme_infinito.loader_class', default=False)
res['infinitoChameleon'] = get_param(
'backend_theme_infinito.is_chameleon', default=False)
menu_bookmark = self.env['infinito.menu.bookmark'].sudo(). \
search([('user_id', '=', self.env.user.id)])
list_bookmark = []
for bookmark in menu_bookmark:
bkm = bookmark.read(['action_id', 'url', 'name'])[0]
bkm['short_name'] = bkm['name'][:2].upper()
list_bookmark.append(bkm)
res['infinitoBookmarks'] = menu_bookmark.action_id.ids
res['infinitoMenuBookmarks'] = list_bookmark
return res

32
backend_theme_infinito/models/menu_bookmark.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 fields, models
class ModelName(models.Model):
_name = 'infinito.menu.bookmark'
_description = 'Menu Bookmark'
name = fields.Char(related='action_id.name')
action_id = fields.Many2one('ir.actions.act_window')
url = fields.Text('Url')
user_id = fields.Many2one('res.users')

40
backend_theme_infinito/models/recent_apps.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 fields, models, api
class RecentApps(models.Model):
_name = 'recent.apps'
_description = 'Recent Apps'
name = fields.Char(compute='_compute_icon', store=True)
app_id = fields.Integer()
icon = fields.Binary(compute='_compute_icon', store=True)
user_id = fields.Many2one('res.users')
@api.depends('app_id')
def _compute_icon(self):
menu_ui = self.env['ir.ui.menu']
for rec in self:
app = menu_ui.browse(rec.app_id)
rec.icon = app._compute_web_icon_data(app.web_icon)
rec.name = app.name

109
backend_theme_infinito/models/res_config_settings.py

@ -0,0 +1,109 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
is_user_edit = fields.Boolean('User edit', default=False)
is_sidebar_enabled = fields.Boolean('Sidebar Enabled', default=False)
is_fullscreen_enabled = fields.Boolean('Full screen Enabled', default=False)
is_sidebar_icon = fields.Boolean('Sidebar icon Enabled', default=True)
is_sidebar_name = fields.Boolean('Sidebar name Enabled', default=True)
is_sidebar_company = fields.Boolean('Sidebar Company Enabled', default=False)
is_sidebar_user = fields.Boolean('Sidebar User Enabled', default=False)
is_recent_apps = fields.Boolean('Recent Apps Enabled', default=False)
is_fullscreen_app = fields.Boolean('Full screen Apps Enabled', default=False)
is_rtl = fields.Boolean('Rtl Enabled', default=False)
is_dark = fields.Boolean('Dark mode Enabled', default=False)
is_menu_bookmark = fields.Boolean('Menu Bookmark mode Enabled', default=False)
is_chameleon = fields.Boolean('Chameleon mode Enabled', default=False)
dark_mode = fields.Selection([
('all', 'All'),
('schedule', 'Schedule'),
('auto', 'Automatic'),
], default='all')
dark_start = fields.Float('Dark Start', default=19.0)
dark_end = fields.Float('Dark End', default=5.0)
loader_class = fields.Char('Loader', default='default')
@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
get_param = self.env['ir.config_parameter'].sudo().get_param
res['is_user_edit'] = get_param('backend_theme_infinito.is_user_edit', default=False)
res['is_sidebar_enabled'] = get_param('backend_theme_infinito.is_sidebar_enabled', default=False)
res['is_fullscreen_enabled'] = get_param('backend_theme_infinito.is_fullscreen_enabled', default=False)
res['is_sidebar_icon'] = get_param('backend_theme_infinito.is_sidebar_icon', default=False)
res['is_sidebar_name'] = get_param('backend_theme_infinito.is_sidebar_name', default=False)
res['is_sidebar_company'] = get_param('backend_theme_infinito.is_sidebar_company', default=False)
res['is_sidebar_user'] = get_param('backend_theme_infinito.is_sidebar_user', default=False)
res['is_recent_apps'] = get_param('backend_theme_infinito.is_recent_apps', default=False)
res['is_rtl'] = get_param('backend_theme_infinito.is_rtl', default=False)
res['is_dark'] = get_param('backend_theme_infinito.is_dark', default=False)
res['is_menu_bookmark'] = get_param('backend_theme_infinito.is_menu_bookmark', default=False)
res['dark_mode'] = get_param('backend_theme_infinito.dark_mode', default='all')
res['dark_start'] = get_param('backend_theme_infinito.dark_start', default=19.0)
res['dark_end'] = get_param('backend_theme_infinito.dark_end', default=5.0)
res['loader_class'] = get_param('backend_theme_infinito.loader_class', default=5.0)
res['is_chameleon'] = get_param('backend_theme_infinito.is_chameleon', default=False)
return res
@api.model
def set_values(self):
set_param = self.env['ir.config_parameter'].sudo().set_param
set_param('backend_theme_infinito.is_user_edit',
self.is_user_edit)
set_param('backend_theme_infinito.is_sidebar_enabled',
self.is_sidebar_enabled)
set_param('backend_theme_infinito.is_fullscreen_enabled',
self.is_fullscreen_enabled)
set_param('backend_theme_infinito.is_sidebar_icon',
self.is_sidebar_icon)
set_param('backend_theme_infinito.is_sidebar_name',
self.is_sidebar_name)
set_param('backend_theme_infinito.is_sidebar_company',
self.is_sidebar_company)
set_param('backend_theme_infinito.is_sidebar_user',
self.is_sidebar_user)
set_param('backend_theme_infinito.is_recent_apps',
self.is_recent_apps)
set_param('backend_theme_infinito.is_rtl',
self.is_rtl)
set_param('backend_theme_infinito.is_dark',
self.is_dark)
set_param('backend_theme_infinito.dark_mode',
self.dark_mode)
set_param('backend_theme_infinito.dark_start',
self.dark_start)
set_param('backend_theme_infinito.dark_end',
self.dark_end)
set_param('backend_theme_infinito.is_menu_bookmark',
self.is_menu_bookmark)
set_param('backend_theme_infinito.loader_class',
self.loader_class)
set_param('backend_theme_infinito.is_chameleon',
self.is_chameleon)
super(ResConfigSettings, self).set_values()

50
backend_theme_infinito/models/res_users.py

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-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 fields, models
class User(models.Model):
_inherit = 'res.users'
is_sidebar_enabled = fields.Boolean('Sidebar Enabled', default=False)
is_fullscreen_enabled = fields.Boolean('Full screen Enabled', default=False)
is_sidebar_icon = fields.Boolean('Sidebar icon Enabled', default=True)
is_sidebar_name = fields.Boolean('Sidebar name Enabled', default=True)
is_sidebar_company = fields.Boolean('Sidebar Company Enabled',
default=False)
is_sidebar_user = fields.Boolean('Sidebar User Enabled', default=False)
is_recent_apps = fields.Boolean('Recent Apps Enabled', default=False)
is_fullscreen_app = fields.Boolean('Full screen Apps Enabled',
default=False)
is_rtl = fields.Boolean('Rtl Enabled', default=False)
is_dark = fields.Boolean('Dark mode Enabled', default=False)
is_menu_bookmark = fields.Boolean('Menu Bookmark mode Enabled',
default=False)
is_chameleon = fields.Boolean('Chameleon mode Enabled', default=False)
dark_mode = fields.Selection([
('all', 'All'),
('schedule', 'Schedule'),
('auto', 'Automatic'),
], default='all')
dark_start = fields.Float('Dark Start', default=19.0)
dark_end = fields.Float('Dark End', default=5.0)
loader_class = fields.Char('Loader', default='default')

BIN
backend_theme_infinito/static/description/assets/hero.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

BIN
backend_theme_infinito/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/bookmark.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/calendar.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/discuss.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/adv_button.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/adv_list.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/animation.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/app_bar.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/bookmark.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/dark_mode.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/hover_nav.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/preloader.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/recent_apps.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/rtl.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/gif/side_bar.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/infinito_adv.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/infinito_landing.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/infinito_styles.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/kanban-1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/kanban-grp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/kanban-img.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/kanban.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/kanban_grp.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/list.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/list_group.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/resp-app_bar.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
backend_theme_infinito/static/description/assets/screenshots/resp-sidebar.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/sidebar-list.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/sidebar-small.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/sidebar.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

BIN
backend_theme_infinito/static/description/assets/screenshots/user_edit.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
backend_theme_infinito/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
backend_theme_infinito/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

1106
backend_theme_infinito/static/description/index.html

File diff suppressed because it is too large

BIN
backend_theme_infinito/static/description/theme_screenshot.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

0
backend_theme_infinito/static/src/css/dynamic_styles.css

34
backend_theme_infinito/static/src/css/layout.css

@ -0,0 +1,34 @@
.o_web_client {
background-color: var(--bg_white);
}
.o_web_client > header {
margin: 10px 10px 0px 10px;
border-radius: 10px;
box-shadow: 1px 1px 15px 0;
}
.o_main_navbar {
border-radius: 10px;
}
.o_web_client > .o_action_manager, #sidebar_panel, .oe_kanban_card {
margin: 15px;
border-radius: 10px;
box-shadow: 1px 1px 15px 0;
padding: 15px;
background-color: var(--bg_white);
}
#sidebar_panel {
margin-left: 0px;
background-color: var(--nav_bar_color);
}
.o_main_navbar .o_navbar_apps_menu.show .o-dropdown--menu dropdown-menu {
border-radius: 10px 0 10px 10px;
}
.oe_kanban_card {
box-shadow: none;
}

128
backend_theme_infinito/static/src/css/loaders.css

@ -0,0 +1,128 @@
/* Rotation */
.rotating::before{
content: " ";
position: absolute;
top: calc(50% - 25px);
left: calc(50% - 25px);
height: 50px;
width: 50px;
background-image: linear-gradient(to bottom,black 50%, white 50%);
border-radius: 50%;
animation: rotate 1s;
animation-iteration-count: infinite;
}
.rotating::after{
content: " ";
position: absolute;
top: calc(50% - 20px);
left: calc(50% - 20px);
height: 40px;
width: 40px;
background-color: #020202;
border-radius: 50%;
}
/* Blinking */
.blinking::after{
content: " ";
position: absolute;
top: calc(50% - 25px);
left: calc(50% - 25px);
height: 50px;
width: 50px;
border-radius: 50%;
background-color:#fff;
animation: blink 2000ms ease infinite;
}
.blinking-2::after{
background-color: transparent;
border: 2px solid white;
transform: scale(0);
animation: blink-2 2000ms ease-out infinite,blink-2a 2s ease-out infinite;
animation-fill-mode: forwards;
}
.bounce::after{
content: " ";
position: absolute;
top: calc(50% - 50px);
left: calc(50% - 25px);
height: 50px;
width: 50px;
box-sizing: border-box;
background-image: linear-gradient(to bottom,rgb(255, 255, 255) 60%, rgb(235, 235, 235) 80%, rgb(210, 210, 210));
border-radius: 50%;
animation: bounce 2s;
animation-iteration-count: infinite;
}
.ring:after {
content: " ";
display: block;
width: 64px;
height: 64px;
margin: 8px;
border-radius: 50%;
border: 6px solid #fff;
border-color: #fff transparent #fff transparent;
animation: ring 1.2s linear infinite;
}
/* Key frames */
@keyframes rotate{
from{
transform: rotate(0deg);
}
to{
transform: rotate(360deg);
}
}
@keyframes blink{
0%{
transform: scale(1);
}
50%{
transform: scale(1.5);
}
100%{
transform: scale(1);
}
}
@keyframes blink-2{
0%{
transform: scale(0.2);
}
100%{
transform: scale(1.5);
}
}
@keyframes bounce{
0%,100%{
transform: translateY(0);
height: 50px;
width: 50px;
}
50%{
transform: translateY(50px);
height: 45px;
width: 55px;
}
}
@keyframes ring {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

1460
backend_theme_infinito/static/src/css/style.css

File diff suppressed because it is too large

1198
backend_theme_infinito/static/src/css/style2.css

File diff suppressed because it is too large

1
backend_theme_infinito/static/src/img/alignment/align-objects.svg

@ -0,0 +1 @@
<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m268.161 235.27h-190.036v-190.035h190.036z"/><path d="m512 466.765h-433.875v-190.036h433.875z"/><path d="m0 0h30v512h-30z"/></svg>

After

Width:  |  Height:  |  Size: 274 B

6
backend_theme_infinito/static/src/img/alignment/align-right.svg

@ -0,0 +1,6 @@
<svg id="Layer_1" height="512" viewBox="0 0 24 24" width="512"
xmlns="http://www.w3.org/2000/svg" data-name="Layer 1">
<path d="m20 1h2v22h-2z" fill="#fff"/>
<path d="m2 12h17v8h-17z" fill="#fff"/>
<path d="m5 4h14v7h-14z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 260 B

49
backend_theme_infinito/static/src/img/alignment/center-align.svg

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 334.367 334.367" style="enable-background:new 0 0 334.367 334.367;" xml:space="preserve">
<g>
<g>
<g>
<path d="M10.449,52.245h313.469c5.771,0,10.449-4.678,10.449-10.449s-4.678-10.449-10.449-10.449H10.449
C4.678,31.347,0,36.025,0,41.796S4.678,52.245,10.449,52.245z"/>
<path d="M57.469,114.939c-5.771,0-10.449,4.678-10.449,10.449c0,5.771,4.678,10.449,10.449,10.449h219.429
c5.771,0,10.449-4.678,10.449-10.449c0-5.771-4.678-10.449-10.449-10.449H57.469z"/>
<path d="M323.918,198.531H10.449C4.678,198.531,0,203.209,0,208.98s4.678,10.449,10.449,10.449h313.469
c5.771,0,10.449-4.678,10.449-10.449S329.689,198.531,323.918,198.531z"/>
<path d="M237.714,282.122H96.653c-5.771,0-10.449,4.678-10.449,10.449s4.678,10.449,10.449,10.449h141.061
c5.771,0,10.449-4.678,10.449-10.449S243.485,282.122,237.714,282.122z"/>
</g>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

55
backend_theme_infinito/static/src/img/alignment/justification (1).svg

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 333 333" style="enable-background:new 0 0 333 333;" xml:space="preserve">
<g>
<g>
<path d="M323,31.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,31.5,323,31.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,114.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,114.5,323,114.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,198.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,198.5,323,198.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,281.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,281.5,323,281.5z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

55
backend_theme_infinito/static/src/img/alignment/left-align.svg

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 333 333" style="enable-background:new 0 0 333 333;" xml:space="preserve">
<g>
<g>
<path d="M323,31.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,31.5,323,31.5z"/>
</g>
</g>
<g>
<g>
<path d="M230,114.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h220c5.5,0,10-4.5,10-10S235.5,114.5,230,114.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,198.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,198.5,323,198.5z"/>
</g>
</g>
<g>
<g>
<path d="M151,281.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h141c5.5,0,10-4.5,10-10S156.5,281.5,151,281.5z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

55
backend_theme_infinito/static/src/img/alignment/right-align.svg

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 333 333" style="enable-background:new 0 0 333 333;" xml:space="preserve">
<g>
<g>
<path d="M323,31.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,31.5,323,31.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,114.5H104c-5.5,0-10,4.5-10,10s4.5,10,10,10h219c5.5,0,10-4.5,10-10S328.5,114.5,323,114.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,198.5H10c-5.5,0-10,4.5-10,10s4.5,10,10,10h313c5.5,0,10-4.5,10-10S328.5,198.5,323,198.5z"/>
</g>
</g>
<g>
<g>
<path d="M323,281.5H182c-5.5,0-10,4.5-10,10s4.5,10,10,10h141c5.5,0,10-4.5,10-10S328.5,281.5,323,281.5z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

8
backend_theme_infinito/static/src/img/alignment/top-alignment.svg

@ -0,0 +1,8 @@
<svg id="Capa_1" enable-background="new 0 0 512 512" height="512"
viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="m0 451h512v30h-512z" fill="#fff"/>
<path d="m271 151h150v270h-150z" fill="#fff"/>
<path d="m91 31h150v390h-150z" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 324 B

2
backend_theme_infinito/static/src/img/brand_icon/infinity.svg

@ -0,0 +1,2 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" version="1.1" width="512" height="512" x="0" y="0" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512" xml:space="preserve" class=""><g><g xmlns="http://www.w3.org/2000/svg"><path d="m392 135.995c-33.74 0-64.22 13.92-86.02 36.33l-29.06 29.87 31.42 32.29 29.92-30.76c13.63-14.01 32.69-22.73 53.74-22.73 41.35 0 75 33.65 75 75.01 0 41.35-33.65 75-75 75-21.05 0-40.11-8.72-53.74-22.74-117.536-120.824-132.066-135.761-132.24-135.94-21.8-22.41-52.28-36.33-86.02-36.33-66.27 0-120 53.73-120 120.01 0 66.27 53.73 120 120 120 33.74 0 64.22-13.92 86.02-36.33l29.06-29.87-31.42-32.29-29.92 30.75c-13.63 14.02-32.69 22.74-53.74 22.74-41.35 0-75-33.65-75-75 0-41.36 33.65-75.01 75-75.01 21.05 0 40.11 8.72 53.74 22.73 5.151 5.296 131.004 134.68 132.24 135.95 21.8 22.41 52.28 36.33 86.02 36.33 66.27 0 120-53.73 120-120 0-66.28-53.73-120.01-120-120.01z" fill="#ffffff" data-original="#000000" class=""/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

86
backend_theme_infinito/static/src/img/brightness.svg

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<g>
<path d="M256,0c-8.284,0-15,6.716-15,15v32c0,8.284,6.716,15,15,15s15-6.716,15-15V15C271,6.716,264.284,0,256,0z"/>
</g>
</g>
<g>
<g>
<path d="M256,450c-8.284,0-15,6.716-15,15v32c0,8.284,6.716,15,15,15s15-6.716,15-15v-32C271,456.716,264.284,450,256,450z"/>
</g>
</g>
<g>
<g>
<path d="M119.529,98.315L96.901,75.687c-5.858-5.857-15.356-5.857-21.213,0c-5.858,5.858-5.858,15.356,0,21.213l22.628,22.628
c2.928,2.929,6.767,4.394,10.606,4.394s7.678-1.465,10.607-4.394C125.387,113.67,125.387,104.172,119.529,98.315z"/>
</g>
</g>
<g>
<g>
<path d="M436.313,415.099l-22.628-22.628c-5.858-5.857-15.356-5.857-21.213,0c-5.858,5.858-5.858,15.356,0,21.213l22.628,22.628
c2.928,2.929,6.767,4.394,10.606,4.394c3.839,0,7.678-1.465,10.607-4.394C442.171,430.454,442.171,420.956,436.313,415.099z"/>
</g>
</g>
<g>
<g>
<path d="M47,241H15c-8.284,0-15,6.716-15,15s6.716,15,15,15h32c8.284,0,15-6.716,15-15S55.284,241,47,241z"/>
</g>
</g>
<g>
<g>
<path d="M497,241h-32c-8.284,0-15,6.716-15,15s6.716,15,15,15h32c8.284,0,15-6.716,15-15S505.284,241,497,241z"/>
</g>
</g>
<g>
<g>
<path d="M119.529,392.471c-5.858-5.857-15.356-5.857-21.213,0l-22.628,22.628c-5.858,5.858-5.858,15.356,0,21.213
c2.928,2.929,6.767,4.394,10.606,4.394s7.678-1.465,10.606-4.393l22.629-22.629C125.387,407.826,125.387,398.328,119.529,392.471z
"/>
</g>
</g>
<g>
<g>
<path d="M436.313,75.688c-5.858-5.857-15.356-5.857-21.213,0l-22.628,22.627c-5.858,5.858-5.858,15.356,0,21.213
c2.928,2.929,6.767,4.394,10.606,4.394s7.678-1.465,10.607-4.393l22.628-22.628C442.171,91.043,442.171,81.545,436.313,75.688z"/>
</g>
</g>
<g>
<g>
<path d="M256,97c-87.673,0-159,71.327-159,159s71.327,159,159,159s159-71.327,159-159S343.673,97,256,97z M271,384.123V127.877
c64.089,7.456,114,62.066,114,128.123S335.089,376.667,271,384.123z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
backend_theme_infinito/static/src/img/center-align.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

0
backend_theme_infinito/static/src/img/centered-text-of-alignment-button.png

BIN
backend_theme_infinito/static/src/img/close.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

BIN
backend_theme_infinito/static/src/img/color_picker/color-picker.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

1
backend_theme_infinito/static/src/img/downward-arrow.svg

@ -0,0 +1 @@
<svg enable-background="new 0 0 64 64" height="512" viewBox="0 0 64 64" width="512" xmlns="http://www.w3.org/2000/svg"><g id="Arrow-13"><path d="m54.9210777 20.296875c-.15625-.3701172-.5185547-.6108398-.9208984-.6108398l-44 .0004883c-.4018555 0-.7646484.2407227-.9213867.6108398-.15625.3701172-.0756836.7983398.2045898 1.0864258l22 22.6274414c.1879883.1933594.4467773.3027344.7167969.3027344s.5288086-.109375.7167969-.3027344l22-22.6279297c.2802734-.2885742.3603515-.7163086.2041015-1.0864258z"/></g></svg>

After

Width:  |  Height:  |  Size: 506 B

1
backend_theme_infinito/static/src/img/eyedropper.svg

@ -0,0 +1 @@
<svg id="Capa_1" enable-background="new 0 0 511.978 511.978" height="512" viewBox="0 0 511.978 511.978" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m489.571 22.436c-14.467-14.468-33.703-22.436-54.164-22.436s-39.697 7.968-54.165 22.436l-91.597 91.597c-7.943-6.584-17.836-10.17-28.282-10.17-11.863 0-23.016 4.62-31.403 13.008-8.388 8.388-13.008 19.54-13.008 31.403 0 10.447 3.587 20.34 10.17 28.282l-165.836 165.836c-17.585 17.586-25.402 42.454-21.412 66.649l-26.799 26.798c-8.427 8.427-13.067 19.63-13.067 31.547s4.641 23.121 13.067 31.547c8.697 8.697 20.122 13.045 31.547 13.045s22.85-4.349 31.547-13.046l26.799-26.798c24.191 3.991 49.062-3.827 66.648-21.413l165.836-165.836c7.942 6.584 17.835 10.17 28.283 10.17 11.862 0 23.015-4.619 31.402-13.007 16.31-16.311 17.251-42.252 2.835-59.681l91.601-91.601c29.865-29.867 29.864-78.464-.002-108.33zm-197.178 263.083h-131.808l87.608-87.608 65.904 65.904zm-143.99 143.989c-12.026 12.028-29.659 16.545-46.021 11.785-5.253-1.525-10.925-.074-14.796 3.797l-32.631 32.63c-5.697 5.698-14.971 5.698-20.668 0-5.669-5.439-5.669-15.227 0-20.667l32.631-32.63c3.87-3.87 5.325-9.54 3.797-14.795-4.759-16.36-.243-33.994 11.783-46.022l48.086-48.086h131.808zm225.52-168.673c-5.619 5.619-14.761 5.618-20.38 0-.005 0-102.371-102.371-102.371-102.371-5.618-5.619-5.618-14.761 0-20.38 5.364-5.59 15.017-5.59 20.381 0 0 0 102.37 102.37 102.37 102.371 5.619 5.618 5.619 14.761 0 20.38zm94.436-151.282-91.456 91.456-65.903-65.905 91.455-91.455c18.17-18.169 47.734-18.169 65.904 0 18.169 18.17 18.169 47.734 0 65.904z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
backend_theme_infinito/static/src/img/gear.svg

@ -0,0 +1 @@
<svg id="Capa_1" enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m256 341c46.869 0 85-38.131 85-85s-38.131-85-85-85-85 38.131-85 85 38.131 85 85 85zm0-140c30.327 0 55 24.673 55 55s-24.673 55-55 55-55-24.673-55-55 24.673-55 55-55z"/><path d="m115.995 299.644c2.632 8.452 6.027 16.639 10.152 24.483l-12.676 20.477c-3.664 5.919-2.775 13.58 2.147 18.502l33.275 33.275c4.922 4.923 12.584 5.812 18.501 2.147l20.477-12.676c7.845 4.125 16.032 7.521 24.483 10.152l5.514 23.431c1.594 6.775 7.64 11.564 14.601 11.564h47.059c6.961 0 13.007-4.789 14.601-11.564l5.514-23.431c8.451-2.632 16.638-6.027 24.483-10.152l20.477 12.676c5.917 3.663 13.58 2.772 18.501-2.147l33.275-33.275c4.922-4.922 5.812-12.583 2.147-18.502l-12.676-20.477c4.125-7.845 7.52-16.032 10.152-24.483l23.431-5.513c6.776-1.595 11.564-7.641 11.564-14.602v-47.059c0-6.961-4.789-13.007-11.564-14.602l-23.431-5.513c-2.632-8.452-6.027-16.639-10.152-24.483l12.676-20.477c3.664-5.919 2.775-13.58-2.147-18.502l-33.275-33.275c-4.922-4.923-12.584-5.812-18.501-2.147l-20.477 12.676c-7.845-4.125-16.032-7.521-24.483-10.152l-5.514-23.431c-1.593-6.775-7.639-11.564-14.6-11.564h-47.059c-6.961 0-13.007 4.789-14.601 11.564l-5.514 23.431c-8.451 2.632-16.638 6.027-24.483 10.152l-20.477-12.676c-5.918-3.665-13.581-2.774-18.501 2.147l-33.275 33.275c-4.922 4.922-5.812 12.583-2.147 18.502l12.676 20.477c-4.125 7.845-7.52 16.031-10.152 24.483l-23.431 5.513c-6.776 1.596-11.565 7.642-11.565 14.603v47.059c0 6.961 4.789 13.007 11.564 14.602zm-4.995-55.293 20.51-4.825c5.504-1.295 9.812-5.575 11.143-11.07 2.83-11.682 7.449-22.821 13.729-33.107 2.947-4.827 2.928-10.902-.049-15.711l-11.1-17.93 16.474-16.475 17.931 11.1c4.809 2.977 10.883 2.995 15.71.049 10.287-6.279 21.426-10.897 33.107-13.728 5.495-1.331 9.775-5.639 11.07-11.143l4.826-20.511h23.299l4.826 20.511c1.295 5.504 5.575 9.812 11.07 11.143 11.681 2.83 22.82 7.448 33.107 13.728 4.828 2.949 10.902 2.929 15.71-.049l17.931-11.1 16.474 16.475-11.1 17.93c-2.977 4.809-2.996 10.884-.049 15.711 6.279 10.286 10.898 21.426 13.729 33.107 1.331 5.495 5.639 9.775 11.143 11.07l20.51 4.825v23.299l-20.51 4.825c-5.504 1.295-9.812 5.575-11.143 11.07-2.83 11.682-7.449 22.82-13.728 33.107-2.947 4.828-2.928 10.902.049 15.711l11.099 17.93-16.474 16.475-17.931-11.1c-4.81-2.978-10.884-2.996-15.71-.049-10.287 6.279-21.426 10.897-33.107 13.728-5.495 1.331-9.775 5.639-11.07 11.143l-4.827 20.51h-23.299l-4.826-20.511c-1.295-5.504-5.575-9.812-11.07-11.143-11.681-2.83-22.82-7.448-33.107-13.728-4.827-2.948-10.902-2.927-15.71.049l-17.931 11.1-16.474-16.475 11.1-17.93c2.977-4.809 2.996-10.884.049-15.711-6.279-10.286-10.898-21.426-13.729-33.107-1.331-5.495-5.639-9.775-11.143-11.07l-20.509-4.825z"/><path d="m256 30c41.254 0 81.612 11.372 116.619 32.464l-20.254 3.572c-8.158 1.438-13.606 9.218-12.167 17.377 1.439 8.158 9.218 13.606 17.377 12.167l55.942-9.865c8.158-1.438 13.606-9.218 12.167-17.377l-9.864-55.94c-1.439-8.158-9.219-13.606-17.377-12.167h-.001c-8.158 1.439-13.606 9.219-12.167 17.377l3.565 20.215c-40.054-24.568-86.426-37.823-133.84-37.823-68.38 0-132.667 26.629-181.02 74.98-48.352 48.353-74.98 112.64-74.98 181.02 0 8.284 6.716 15 15 15s15-6.716 15-15c0-124.617 101.383-226 226-226z"/><path d="m497 241c-8.284 0-15 6.716-15 15 0 124.617-101.383 226-226 226-41.253 0-81.608-11.372-116.613-32.465l20.247-3.57c8.158-1.438 13.606-9.218 12.167-17.377-1.439-8.158-9.218-13.606-17.377-12.167l-55.942 9.865c-8.158 1.438-13.606 9.218-12.167 17.376l9.864 55.94c1.439 8.158 9.219 13.606 17.377 12.167h.001c8.158-1.439 13.606-9.219 12.167-17.377l-3.568-20.235c40.057 24.574 86.426 37.843 133.844 37.843 68.38 0 132.667-26.629 181.02-74.98 48.352-48.353 74.98-112.64 74.98-181.02 0-8.284-6.716-15-15-15z"/></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
backend_theme_infinito/static/src/img/icons/apps.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
backend_theme_infinito/static/src/img/icons/attendance.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
backend_theme_infinito/static/src/img/icons/calendar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
backend_theme_infinito/static/src/img/icons/contact.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
backend_theme_infinito/static/src/img/icons/crm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
backend_theme_infinito/static/src/img/icons/dashboard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
backend_theme_infinito/static/src/img/icons/discuss.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
backend_theme_infinito/static/src/img/icons/elearning.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
backend_theme_infinito/static/src/img/icons/employees.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
backend_theme_infinito/static/src/img/icons/events.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

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

Loading…
Cancel
Save