@ -0,0 +1,47 @@ |
|||
.. 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 |
|||
|
|||
Infinito Plus Backend Theme |
|||
=========================== |
|||
* Infinito Plus Backend Theme 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 |
|||
Author : Sigha CK @Cybrosys |
|||
|
|||
Contacts |
|||
-------- |
|||
* Mail Contact : odoo@cybrosys.com |
|||
|
|||
Bug Tracker |
|||
----------- |
|||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
|||
|
|||
Maintainer |
|||
========== |
|||
.. 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>`__ |
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 |
@ -0,0 +1,63 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 Plus 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 Fonts,Animations, Languages,Chatbox Layouts...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': ['backend_theme_infinito', 'web'], |
|||
"data": [ |
|||
'security/ir.model.access.csv' |
|||
], |
|||
'assets': { |
|||
'web.assets_backend': { |
|||
'/backend_theme_infinito_plus/static/src/xml/theme_editor.xml', |
|||
'/backend_theme_infinito_plus/static/src/xml/ListViewRefresh.xml', |
|||
'/backend_theme_infinito_plus/static/src/xml/systray.xml', |
|||
'/backend_theme_infinito_plus/static/src/xml/AddGoogleFonts.xml', |
|||
'/backend_theme_infinito_plus/static/src/xml/font.xml', |
|||
'/backend_theme_infinito_plus/static/src/css/font.css', |
|||
'/backend_theme_infinito_plus/static/src/css/chatter.css', |
|||
'/backend_theme_infinito_plus/static/src/scss/animation.scss', |
|||
'/backend_theme_infinito_plus/static/src/js/navbar.js', |
|||
'/backend_theme_infinito_plus/static/src/js/AdvancedFeatures.js', |
|||
'/backend_theme_infinito_plus/static/src/js/systray.js', |
|||
'/backend_theme_infinito_plus/static/src/js/ThemeStudioMenu.js', |
|||
}, |
|||
}, |
|||
'images': [ |
|||
'static/description/banner.png', |
|||
'static/description/theme_screenshot.png', |
|||
], |
|||
'license': 'LGPL-3', |
|||
'installable': True, |
|||
'application': False, |
|||
'auto_install': False, |
|||
} |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 |
@ -0,0 +1,117 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 |
|||
|
|||
from odoo.addons.backend_theme_infinito.controllers.main import ThemeStudio |
|||
from odoo.addons.backend_theme_infinito.controllers.main import minify_css |
|||
|
|||
from odoo import http |
|||
from odoo.http import request |
|||
|
|||
|
|||
class ThemeStudioPlus(ThemeStudio): |
|||
""" Class for adding new features""" |
|||
|
|||
@http.route(['/theme_studio/save_styles_plus'], type="json") |
|||
def save_styles_plus(self, new_style): |
|||
"""Create Dynamic Styles css file for chat box layout""" |
|||
changed_styles = json.loads(new_style) |
|||
working_dir = os.path.dirname(os.path.realpath(__file__)) |
|||
working_dir = working_dir.replace('/controllers', '') |
|||
file_path = working_dir + '/static/src/css/chatter.css' |
|||
style_file = open(file_path, 'a') |
|||
style_file.truncate(0) |
|||
if os.stat(file_path).st_size == 0: |
|||
style_file.write('/* This file is generated automatically by ' |
|||
'Theme Infinito Plus */\n') |
|||
style_file.write('.o_ChatWindow' + ' {\n') |
|||
for i in changed_styles[0]: |
|||
style_file.write('\t' + i + ':' + changed_styles[0][i] + ';\n') |
|||
style_file.write('}\n') |
|||
style_file.close() |
|||
minify_css(file_path) |
|||
return True |
|||
|
|||
@http.route(['/theme_studio/animation_styles'], type="json") |
|||
def animation_styles(self, style): |
|||
"""create the Dynamic css file for animation""" |
|||
animated = json.loads(style) |
|||
saved_style = animated[0] |
|||
working_dir = os.path.dirname(os.path.realpath(__file__)) |
|||
file_path = working_dir.replace('/controllers', |
|||
'/static/src/scss/animation.scss') |
|||
read_file = open(file_path, 'r') |
|||
css = read_file.read() |
|||
write_file = open(file_path, 'w') |
|||
for line in css.split('\n'): |
|||
if 'ease-in' in line: |
|||
write_file.write(css.replace(line.strip(), |
|||
'animation:' + saved_style + '#{' |
|||
'$tr * .1}s ease-in !important;')) |
|||
write_file.close() |
|||
read_file.close() |
|||
|
|||
@http.route(['/theme_studio/set_advanced_data_plus'], type="json") |
|||
def set_advanced_data_plus(self, vals): |
|||
"""save the features from theme studio""" |
|||
set_param = request.env['ir.config_parameter'].sudo().set_param |
|||
set_param('backend_theme_infinito_plus.is_refresh', |
|||
vals['infinitoRefresh']) |
|||
set_param('backend_theme_infinito_plus.chatbox_position', |
|||
vals['chatBoxPosition']) |
|||
set_param('backend_theme_infinito_plus.chatbox_position', |
|||
vals['chatBoxPosition']) |
|||
vals.get('chatBoxPosition') |
|||
vals.get('infinitoAnimation') |
|||
font = vals.get('infinitoGoogleFont') |
|||
font_obj = request.env['infinito.google.font'] |
|||
if font == 0: |
|||
font_obj.remove_fonts() |
|||
elif font: |
|||
font_obj.browse(font).set_css() |
|||
|
|||
@http.route(['/theme_studio/set_advanced_data_user_plus'], type="json") |
|||
def set_advanced_data_user_plus(self, vals): |
|||
"""Update the 'is_refresh' field of the current user""" |
|||
request.env.user.write({ |
|||
'is_refresh': vals['infinitoRefresh'], |
|||
}) |
|||
return True |
|||
|
|||
@http.route(['/theme_studio_plus/reset_to_default_style'], type="json") |
|||
def reset_to_default_style(self): |
|||
"""rest to default styles""" |
|||
working_dir = os.path.dirname(os.path.realpath(__file__)) |
|||
style_file_path = working_dir.replace('controllers', |
|||
'static/src/css/font.css') |
|||
animation_file_path = working_dir.replace('controllers', |
|||
'static/src/scss/animation.scss') |
|||
chat_file_path = working_dir.replace('controllers', |
|||
'static/src/css/chatter.css') |
|||
style_file = open(style_file_path, 'w') |
|||
style_file.write('') |
|||
animation_file = open(animation_file_path, 'w') |
|||
animation_file.write('') |
|||
chat_file = open(chat_file_path, 'w') |
|||
chat_file.write('') |
|||
return True |
@ -0,0 +1,6 @@ |
|||
## Module <backend_theme_infinito_plus_> |
|||
|
|||
#### 05.05.2023 |
|||
#### Version 16.0.1.0.0 |
|||
#### ADD |
|||
- Initial Commit for Infinito Plus Backend Theme |
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 add_google_fonts |
|||
from . import ir_http |
|||
from . import res_config_settings |
|||
from . import res_users |
@ -0,0 +1,90 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 os |
|||
|
|||
import requests |
|||
|
|||
from odoo import api, fields, models, _ |
|||
from odoo.exceptions import ValidationError |
|||
|
|||
|
|||
class GoogleFont(models.Model): |
|||
"""Used for adding google fonts""" |
|||
_name = 'infinito.google.font' |
|||
_description = 'Add Google Fonts' |
|||
|
|||
name = fields.Char(string='Font Name', help="Name of the font") |
|||
font_url = fields.Text(string='Font URL', help="Store the font URL") |
|||
font = fields.Text(string='Font', help="Font style") |
|||
|
|||
@api.model |
|||
def save_google_fonts(self, g_font): |
|||
"""Function to store fonts in database""" |
|||
record = self.search([('font_url', '=', g_font[1])]) |
|||
if record: |
|||
# TODO: Raise warning |
|||
raise ValidationError(_('Font already existing')) |
|||
else: |
|||
font = self.get_css(g_font[0]) |
|||
rec = self.create({ |
|||
'name': g_font[0], |
|||
'font_url': g_font[1], |
|||
'font': font |
|||
}) |
|||
rec.set_css() |
|||
|
|||
def get_css(self, name): |
|||
"""get the css file of selected google font""" |
|||
headers_woff2 = { |
|||
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ' |
|||
'(KHTML, like Gecko)' |
|||
'Chrome/101.0.4951.41 Safari/537.36', |
|||
} |
|||
url = f'https://fonts.googleapis.com/css?family={name}&display=swap' |
|||
req = requests.get(url, timeout=5, headers=headers_woff2) |
|||
return req.content |
|||
|
|||
def set_css(self): |
|||
"""open the file write the style in to the css file""" |
|||
working_dir = os.path.dirname(os.path.realpath(__file__)) |
|||
working_dir = working_dir.replace('/models', '/static/src/css/font.css') |
|||
# open the file in write mode |
|||
with open(working_dir, 'w') as file: |
|||
style = f""" |
|||
{self.font} |
|||
* {{ |
|||
font-family: '{self.name}' !important; |
|||
}} |
|||
.fa {{ |
|||
font: normal normal normal 14px/1 FontAwesome !important;}} |
|||
.oi {{ |
|||
font-family: 'odoo_ui_icons' !important;}} |
|||
""" |
|||
file.write(style) |
|||
|
|||
@staticmethod |
|||
def remove_fonts(): |
|||
"""remove the style when changing the font""" |
|||
working_dir = os.path.dirname(os.path.realpath(__file__)) |
|||
working_dir = working_dir.replace('/models', '/static/src/css/font.css') |
|||
with open(working_dir, 'w') as file: |
|||
file.write('') |
@ -0,0 +1,52 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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 |
|||
|
|||
|
|||
class IrHttp(models.AbstractModel): |
|||
"""Class for session information""" |
|||
_inherit = 'ir.http' |
|||
|
|||
def session_info(self): |
|||
"""pass the session information """ |
|||
res = super(IrHttp, self).session_info() |
|||
get_param = self.env['ir.config_parameter'].sudo().get_param |
|||
all_langs = self.env['res.lang'].get_installed() |
|||
res['currentLang'] = \ |
|||
list(filter(lambda x: x[0] == self.env.user.lang, all_langs))[0] |
|||
res['availableLanguages'] = all_langs |
|||
if self.env.user.has_group('base.group_user'): |
|||
user_edit = get_param( |
|||
'backend_theme_infinito_plus.is_user_edit', default=False) |
|||
res['userEdit'] = user_edit |
|||
if user_edit: |
|||
res['infinitoRefresh'] = self.env.user.is_refresh |
|||
else: |
|||
res['infinitoRefresh'] = get_param( |
|||
'backend_theme_infinito_plus.is_refresh', default=False) |
|||
res['chatBoxPosition'] = get_param( |
|||
'backend_theme_infinito_plus.chatbox_position', |
|||
default=False) |
|||
res['infinitoAnimation'] = get_param( |
|||
'backend_theme_infinito_plus.animation_plus', |
|||
default=False) |
|||
return res |
@ -0,0 +1,59 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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): |
|||
"""Class for adding new fields in configuration settings""" |
|||
_inherit = 'res.config.settings' |
|||
|
|||
is_refresh = fields.Boolean(string='Refresh', help='Tree,Kanban Refresh ' |
|||
'mode Enabled', |
|||
default=False) |
|||
chatbox_position = fields.Char(string="ChatBox position", |
|||
help="different layouts for chatBox") |
|||
animation_plus = fields.Char(stirng="Animation", |
|||
help="Different Animations") |
|||
|
|||
@api.model |
|||
def get_values(self): |
|||
"""Get the current values for the configuration settings""" |
|||
res = super(ResConfigSettings, self).get_values() |
|||
get_param = self.env['ir.config_parameter'].sudo().get_param |
|||
res['is_refresh'] = get_param('backend_theme_infinito_plus.is_refresh', |
|||
default=False) |
|||
res['chatbox_position'] = get_param('backend_theme_infinito_plus' |
|||
'.chatbox_position') |
|||
res['animation_plus'] = get_param('backend_theme_infinito_plus' |
|||
'.animation_plus') |
|||
return res |
|||
|
|||
@api.model |
|||
def set_values(self): |
|||
"""Update the values of the configuration settings""" |
|||
set_param = self.env['ir.config_parameter'].sudo().set_param |
|||
set_param('backend_theme_infinito_plus.is_refresh', self.is_refresh) |
|||
set_param('backend_theme_infinito_plus.chatbox_position', |
|||
self.chatbox_position) |
|||
set_param('backend_theme_infinito_plus.animation_plus', |
|||
self.animation_plus) |
|||
super(ResConfigSettings, self).set_values() |
@ -0,0 +1,31 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Sigha CK (odoo@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): |
|||
"""class for user specific datas""" |
|||
_inherit = 'res.users' |
|||
|
|||
is_refresh = fields.Boolean(string='Tree,Kanban Refresh mode Enabled', |
|||
help="Refreshing feature for specific users", |
|||
default=False) |
|
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 284 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 737 KiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 2.4 MiB |
After Width: | Height: | Size: 359 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,512 @@ |
|||
<!-- 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-size: 67px !important; color: #791d97; font-weight: 900 !important;"> |
|||
INFINITO PLUS<span style="color:#5154a5;">Backend Theme </span><sup></sup> |
|||
</h1> |
|||
<p class="my-1 text-center text-uppercase" |
|||
style="letter-spacing: 4px !important; color: #74788D !important;"> |
|||
Utmost and dynamic backend theme for Odoo 16</p> |
|||
</div> |
|||
<div class="col-lg-12 d-flex justify-content-center align-items-center" |
|||
style="margin: 2rem 0;"> |
|||
<img src="./assets/hero.png" 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;"> |
|||
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 Fonts, animation, Chatbox Layout,...Etc. |
|||
Moreover It Act As A Studio Based Theme. It Also Provides |
|||
Language switching feature. |
|||
It Is A Perfect Choice For Your Odoo Backend And An Attractive |
|||
Theme For Your Odoo 16. |
|||
</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"> |
|||
<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" style="margin-top: 3rem;"> |
|||
<div class="row shadow" |
|||
style="margin: 2rem;padding: 0rem !important;background-color: #fff !important;border-top: 5px solid #791d97 !important;min-width: 94% !important;"> |
|||
<div class="col-lg-12" |
|||
style="padding-left: 0 !important; padding-right: 0!important;"> |
|||
<img src="./assets/screenshots/gif/refresh_icon.gif" width="100%" |
|||
height="auto" |
|||
class="img-responsive"> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col-lg-8" style="padding: 2.5rem !important;"> |
|||
<div class="text-center" |
|||
style="font-size: 0.9rem !important; background-color: #791d97 !important; padding: 0.5 1.5rem !important; width: 60px; color: #ffffff !important; font-weight: 700; border-radius: 0.2rem !important; margin: 10px 0 !important;"> |
|||
New |
|||
</div> |
|||
<h3 style="font-weight: 700 !important;">View Refresh</h3> |
|||
<h6 |
|||
style="font-style: Montserrat, 'sans-serif' !important; color: #2A3042 !important; font-weight: 300 !important;"> |
|||
</h6> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF RESPONSIVE --> |
|||
|
|||
<!-- FEATURE Infinito Dynamic Styling--> |
|||
<div class="container" style="margin-top: 3rem;"> |
|||
<div class="row shadow" |
|||
style="margin: 2rem;padding: 0rem !important; background-color: #fff !important; border-top: 5px solid #791d97 !important; min-width: 94% !important;"> |
|||
<div class="col-lg-12" style="padding: 2.5rem 1.5rem!important;"> |
|||
<h3 style="font-weight: 700 !important;">Infinito Animation</h3> |
|||
<h6 |
|||
style="font-style: Montserrat, 'sans-serif' !important; color: #2A3042 !important; font-weight: 300 !important;"> |
|||
The significant and attractive feature of the Backend Theme |
|||
Infinito is its dynamic and powerful styling. |
|||
The user can select different animation. The new Backend |
|||
Theme Infinito V16 delivers you an entirely redesigned |
|||
Kanban view |
|||
and Kanban Group View. The animated view provides a |
|||
comfortable experience for the users. |
|||
</h6> |
|||
<div class="row mt-4"> |
|||
<div class="col-lg-6"> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Dynamic Styles</p> |
|||
</div> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Clean Layout</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-12" |
|||
style="padding-left: 0 !important; padding-right: 0!important;"> |
|||
<img src="./assets/screenshots/gif/animation.gif" |
|||
width="100%" |
|||
height="auto" class="img-responsive"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF FEATURE --> |
|||
|
|||
<!-- TWO COLUMN BLOCK Sidebar--> |
|||
<div class="container" style="margin-top: 3rem;"> |
|||
<div class="row shadow" |
|||
style="margin: 2rem;padding: 0rem !important; background-color: #fff !important; border-top: 5px solid #791d97 !important; min-width: 94% !important;"> |
|||
<h3 class="mx-4 mt-3" style="font-weight: 700 !important;"> |
|||
ChatBox Layout Customization</h3> |
|||
<h6 class="mx-4" |
|||
style="font-style: Montserrat, 'sans-serif' !important; color: #2A3042 !important; font-weight: 300 !important;"> |
|||
Backend Theme Infinito V16 ensures stunning themes for your Odoo |
|||
16 platform. |
|||
The new chatbox layout with more customization options provides |
|||
a better experience. |
|||
The system encompasses the Left, Right, Top, Bottom positions, |
|||
user can select position from these positions. |
|||
</h6> |
|||
<div class="mx-4 my-4"> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Bottom Left</p> |
|||
</div> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Bottom Right</p> |
|||
</div> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Top Right</p> |
|||
</div> |
|||
<div class="d-flex"> |
|||
<i class="fa fa-check-square mr-2" |
|||
style="color:#791d97 !important; margin-top: 5px !important;"></i> |
|||
<p>Top Left</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-12" |
|||
style="padding-left: 0 !important; padding-right: 0!important;"> |
|||
<img src="./assets/screenshots/chatbox_layout.png" width="100%" |
|||
height="auto" class="img-responsive"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- FEATURE full screen app bar--> |
|||
<div class="container" style="margin-top: 3rem;"> |
|||
<div class="row shadow" |
|||
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 5px solid #791d97 !important; min-width: 94% !important;"> |
|||
<div class="col-lg-12" style="padding: 2.5rem 1.5rem!important;"> |
|||
<h3 style="font-weight: 700 !important;">Google Font</h3> |
|||
<h6 class="mx-4" |
|||
style="font-style: Montserrat, 'sans-serif' !important; color: #2A3042 !important; font-weight: 300 !important;"> |
|||
User can customize fonts.This customization options provides a |
|||
better experience. |
|||
</h6> |
|||
</div> |
|||
<div class="col-lg-12" |
|||
style="padding-left: 0 !important; padding-right: 0!important;"> |
|||
<img src="./assets/screenshots/gif/google_fonts.gif" width="100%" |
|||
height="auto" class="img-responsive"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF FEATURE --> |
|||
|
|||
<!-- FEATURE Language Switch--> |
|||
<div class="container" style="margin-top: 3rem;"> |
|||
<div class="row shadow" |
|||
style="margin: 2rem; padding: 0rem !important; background-color: #fff !important; border-top: 5px solid #791d97 !important; min-width: 94% !important;"> |
|||
<div class="col-lg-12" style="padding: 2.5rem 1.5rem!important;"> |
|||
<h3 style="font-weight: 700 !important;">Language Switching</h3> |
|||
<h6 style="font-style: Montserrat, 'sans-serif' !important; color: #2A3042 !important; font-weight: 300 !important;"> |
|||
You can switch languages easily. All added languages will be |
|||
visible on systray option from where you can select the |
|||
language. |
|||
</h6> |
|||
</div> |
|||
<div class="col-lg-12" |
|||
style="padding-left: 0 !important; padding-right: 0!important;"> |
|||
<img src="./assets/screenshots/gif/swtich_languages.gif" width="100%" |
|||
height="auto" class="img-responsive"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF FEATURE --> |
|||
<!-- 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"> |
|||
<h2 style="font-weight: 300 !important; background-color: #fff !important; z-index: 1 !important; padding: 0 1rem !important;"> |
|||
Our Services</h2> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/cogs.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Customization</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/wrench.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/lifebuoy.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Support</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/user.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Hire |
|||
Odoo |
|||
Developer</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/puzzle.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Integration</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/update.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Migration</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/consultation.png" |
|||
class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Consultancy</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/training.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/license.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Licensing Consultancy</h6> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF END OF OUR SERVICES --> |
|||
|
|||
<!-- OUR INDUSTRIES --> |
|||
<section class="container" |
|||
style="margin-top: 6rem !important; background-color: #fff !important;"> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mb-4"> |
|||
<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 & Website |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Mobile |
|||
friendly, |
|||
awe-inspiring product pages</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/service-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Service Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Keep |
|||
track of |
|||
services and invoice</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/restaurant-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Restaurant |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Run |
|||
your bar or |
|||
restaurant methodically</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/hotel-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Hotel Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
An |
|||
all-inclusive |
|||
hotel management application</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF END OF OUR INDUSTRIES --> |
|||
|
|||
<!-- FOOTER --> |
|||
<!-- Footer Section --> |
|||
<section class="container" |
|||
style="margin: 5rem auto 2rem; background-color: #fff !important;"> |
|||
<div class="row" style="max-width:1540px;"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center mb-4"> |
|||
<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-6"> |
|||
<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-6"> |
|||
<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>+91 86068 |
|||
27707</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 --> |
After Width: | Height: | Size: 975 KiB |
@ -0,0 +1,2 @@ |
|||
/* This Styles are generated automatically by Theme Studio */ |
|||
.o_ChatWindow {top:10px !important;left:10px !important;right:auto !important;} |
@ -0,0 +1,55 @@ |
|||
/* This Styles are generated automatically by Theme Studio */ |
|||
/* cyrillic-ext */ |
|||
@font-face { |
|||
font-family: 'Rubik Iso'; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
font-display: swap; |
|||
src: url(https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sAxdvoDjy8.woff2) format('woff2'); |
|||
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; |
|||
} |
|||
/* cyrillic */ |
|||
@font-face { |
|||
font-family: 'Rubik Iso'; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
font-display: swap; |
|||
src: url(https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sAxf_oDjy8.woff2) format('woff2'); |
|||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; |
|||
} |
|||
/* hebrew */ |
|||
@font-face { |
|||
font-family: 'Rubik Iso'; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
font-display: swap; |
|||
src: url(https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sAxefoDjy8.woff2) format('woff2'); |
|||
unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; |
|||
} |
|||
/* latin-ext */ |
|||
@font-face { |
|||
font-family: 'Rubik Iso'; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
font-display: swap; |
|||
src: url(https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sAxdfoDjy8.woff2) format('woff2'); |
|||
unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; |
|||
} |
|||
/* latin */ |
|||
@font-face { |
|||
font-family: 'Rubik Iso'; |
|||
font-style: normal; |
|||
font-weight: 400; |
|||
font-display: swap; |
|||
src: url(https://fonts.gstatic.com/s/rubikiso/v2/x3dickHUfr-S4VAI4sAxe_oD.woff2) format('woff2'); |
|||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
|||
} |
|||
|
|||
* { |
|||
font-family: 'Rubik Iso' !important; |
|||
} |
|||
.fa { |
|||
font: normal normal normal 14px/1 FontAwesome !important;} |
|||
.oi { |
|||
font-family: 'odoo_ui_icons' !important;} |
|||
|
@ -0,0 +1,204 @@ |
|||
odoo.define('backend_theme_infinito_plus.AdvancedFeatures', function(require) { |
|||
"use strict"; |
|||
const {mount} = owl; |
|||
var AdvancedFeatures = require('backend_theme_infinito.AdvancedFeatures'); |
|||
var ajax = require('web.ajax'); |
|||
var session = require('web.session'); |
|||
var Dialog = require('web.Dialog'); |
|||
var core = require('web.core'); |
|||
var _t = core._t; |
|||
var qweb = core.qweb; |
|||
var rpc = require('web.rpc'); |
|||
// includes newly added features
|
|||
AdvancedFeatures.include({ |
|||
events: _.extend ({}, AdvancedFeatures.prototype.events, { |
|||
'click #infinito_font_select': '_onAddGoogleFontClick', |
|||
'change #infinito_font_select': 'onFontChange', |
|||
'change #chatbox_position': 'onPositionChange', |
|||
'change #animated_view': 'onAnimationChange', |
|||
}), |
|||
init: function(parent, type) { |
|||
this._super.apply(this, arguments); |
|||
this.chatBoxPosition = ['Top Right', 'Top Left', 'Bottom Right', 'Bottom Left'] |
|||
this.infinitoAnimation = ['Default', 'Scale', 'Slide in'] |
|||
}, |
|||
// function works when changing animations
|
|||
onAnimationChange: function(ev) { |
|||
let options = ev.target.value |
|||
if (options == 'Scale') { |
|||
this.animated_id = 1 |
|||
} else if (options == 'Slide in') { |
|||
this.animated_id = -1 |
|||
} else { |
|||
this.animated_id = 0 |
|||
} |
|||
}, |
|||
// function works when changing fonts
|
|||
onFontChange: function(ev) { |
|||
let options = ev.target.options |
|||
let selected = this.$(options[options.selectedIndex]) |
|||
if (selected.hasClass('add-font')) { |
|||
return |
|||
} else if (selected.hasClass('system-font')) { |
|||
this.font_id = 0 |
|||
} else { |
|||
this.font_id = parseInt(selected.data('id')) |
|||
} |
|||
}, |
|||
//render all the features while opening theme studio
|
|||
async renderData() { |
|||
this.font_id = false |
|||
this.chat_style = [] |
|||
this._super.apply(this, arguments); |
|||
this.$el.find('#navbarRefreshToggler').attr('checked', session.infinitoRefresh); |
|||
rpc.query({ |
|||
model: "infinito.google.font", |
|||
method: 'search_read', |
|||
args: [], |
|||
}).then((data) => { |
|||
this.$el.find('.infinito_font_select').html(qweb.render('theme_editor_sidebar_advanced_fonts', { |
|||
data |
|||
})) |
|||
}); |
|||
let position_content = ''; |
|||
for (let position of this.chatBoxPosition) { //append different positions to the selection as option
|
|||
position_content += `<option value="${position}">${position}</option>`; |
|||
} |
|||
this.$el.find('#chatbox_position').html(position_content); |
|||
this.$el.find('#chatbox_position').val(session.chatBoxPosition); |
|||
let animation_content = ''; |
|||
for (let animation of this.infinitoAnimation) { //append different animations to the selection as option
|
|||
animation_content += `<option value="${animation}">${animation}</option>`; |
|||
} |
|||
this.$el.find('#animated_view').html(animation_content); |
|||
this.$el.find('#animated_view').val(session.infinitoAnimation); |
|||
}, |
|||
// save the changes
|
|||
async _SaveChanges() { |
|||
this._super.apply(this, arguments); |
|||
let vals = { |
|||
'infinitoRefresh': this.$el.find('#navbarRefreshToggler')[0].checked, |
|||
'infinitoGoogleFont': this.font_id, |
|||
'chatBoxPosition': this.$el.find('#chatbox_position').val(), |
|||
'animations': this.animated_id, |
|||
'infinitoAnimation': this.$el.find("#animated_view").val() |
|||
} |
|||
var chat_style = this.chat_style |
|||
session.infinitoRefresh = vals.infinitoRefresh; |
|||
session.chatBoxPosition = vals.chatBoxPosition; |
|||
session.infinitoAnimation = vals.infinitoAnimation; |
|||
// save animation from the selection
|
|||
var style = []; |
|||
if (vals.animations == 1) { |
|||
style = []; |
|||
style.push('infinito_kanban_scale'); |
|||
} else if (vals.animations == 0) { |
|||
style = []; |
|||
style.push('infinito_kanban_shake'); |
|||
} else if (vals.animations == -1) { |
|||
style = []; |
|||
style.push('infinito_kanban_slide_in'); |
|||
} |
|||
if (style.length != 0) { |
|||
await ajax.jsonRpc('/theme_studio/animation_styles', 'call', { |
|||
'style': JSON.stringify(style) |
|||
}); |
|||
} |
|||
if (chat_style.length != 0) { |
|||
await ajax.jsonRpc('/theme_studio/save_styles_plus', 'call', { |
|||
'new_style': JSON.stringify(chat_style) |
|||
}); |
|||
} |
|||
if (this.type == 'global') { |
|||
await ajax.jsonRpc('/theme_studio/set_advanced_data_plus', 'call', { |
|||
vals |
|||
}).then((_) => { |
|||
this._Close(); |
|||
}) |
|||
} else { |
|||
await ajax.jsonRpc('/theme_studio/set_advanced_data_user_plus', 'call', { |
|||
vals |
|||
}).then((_) => { |
|||
this._Close(); |
|||
}) |
|||
} |
|||
}, |
|||
// on changing chatbox position
|
|||
async onPositionChange(ev) { |
|||
let val = ev.target.value; |
|||
var new_style = []; |
|||
if (val == 'Top Right') { |
|||
new_style = []; |
|||
new_style.push({ |
|||
'top': '10px', |
|||
'left': 'auto' |
|||
}); |
|||
} |
|||
if (val == 'Top Left') { |
|||
new_style = []; |
|||
new_style.push({ |
|||
'top': '10px', |
|||
'left': '10px', |
|||
'right': 'auto' |
|||
}); |
|||
} |
|||
if (val == 'Bottom Left') { |
|||
new_style = []; |
|||
new_style.push({ |
|||
'left': '10px', |
|||
'bottom': '10px', |
|||
'top': 'auto', |
|||
'right': 'auto' |
|||
}); |
|||
} |
|||
if (val == 'Bottom Right') { |
|||
new_style = []; |
|||
new_style.push({ |
|||
'right': '10px', |
|||
'bottom': '10px', |
|||
'top': 'auto', |
|||
'left': 'auto' |
|||
}); |
|||
} |
|||
this.chat_style = new_style |
|||
}, |
|||
// function works when clicking google font
|
|||
_onAddGoogleFontClick: function(ev) { |
|||
var val = ev.target.value |
|||
if (val == "Add a Google Font") { |
|||
const dialog = new Dialog(this, { |
|||
title: _t("Add a Google Font"), |
|||
$content: $(core.qweb.render('backend_theme_infinito_plus.dialog.addGoogleFont')), |
|||
// open a wizard for selecting google font
|
|||
buttons: [{ |
|||
text: _t("Save & Reload"), |
|||
classes: 'btn-primary', |
|||
click: async () => { |
|||
const inputEl = dialog.el.querySelector('.o_input_google_font'); |
|||
let m = inputEl.value.match(/\bfamily=([\w+]+)/); |
|||
// validation of link
|
|||
if (m) { |
|||
const font = m[1].replace(/\+/g, ' '); |
|||
var self = this; |
|||
rpc.query({ |
|||
model: "infinito.google.font", |
|||
method: 'save_google_fonts', |
|||
args: [ |
|||
[font, m.input] |
|||
], |
|||
}).then(function(data) {}); |
|||
window.location.reload(); |
|||
} |
|||
}, |
|||
}, |
|||
{ |
|||
text: _t("Discard"), |
|||
close: true, |
|||
}, |
|||
], |
|||
}); |
|||
dialog.open(); |
|||
} |
|||
} |
|||
}); |
|||
}); |
@ -0,0 +1,13 @@ |
|||
odoo.define('backend_theme_infinito_plus.ThemeStudioMenu', function (require) { |
|||
"use strict"; |
|||
var core = require('web.core'); |
|||
var ThemeStudioMenu = require('backend_theme_infinito.ThemeStudioMenu'); |
|||
var ajax = require('web.ajax'); |
|||
ThemeStudioMenu.include({ |
|||
// reset all the features
|
|||
_onResetClick: async function(ev){ |
|||
this._super.apply(this, arguments); |
|||
await ajax.jsonRpc('/theme_studio_plus/reset_to_default_style', 'call', {}); |
|||
}, |
|||
}) |
|||
}); |
@ -0,0 +1,16 @@ |
|||
/** @odoo-module **/ |
|||
import { NavBar } from "@web/webclient/navbar/navbar"; |
|||
import { WebClient } from "@web/webclient/webclient"; |
|||
import { ControlPanel } from "@web/search/control_panel/control_panel"; |
|||
import { patch } from "@web/core/utils/patch"; |
|||
import session from 'web.session'; |
|||
patch(ControlPanel.prototype, 'backend_theme_infinito_plus/static/src/js/navbar.ControlPanel.js', { |
|||
// works when clicking refresh icon
|
|||
onRefresh(ev) { |
|||
this.env.searchModel._notify(); |
|||
}, |
|||
// check whether the refresh feature is enabled or disabled
|
|||
get RefreshOn() { |
|||
return session.infinitoRefresh; |
|||
}, |
|||
}); |
@ -0,0 +1,27 @@ |
|||
/** @odoo-module **/ |
|||
import { Dropdown } from "@web/core/dropdown/dropdown"; |
|||
import { DropdownItem } from "@web/core/dropdown/dropdown_item"; |
|||
import { registry } from "@web/core/registry"; |
|||
import session from "web.session"; |
|||
import { useService } from "@web/core/utils/hooks"; |
|||
import { Component } from "@odoo/owl"; |
|||
export class LanguageSwitch extends Component { |
|||
setup() { |
|||
this.currentLang = session.currentLang; |
|||
this.availableLanguages = session.availableLanguages; |
|||
this.orm = useService("orm"); |
|||
} |
|||
toggleLang(lang) { |
|||
this.orm.write('res.users', [session.uid], {lang}).then(async () => { |
|||
await this.env.bus.trigger("MENUS:APP-CHANGED"); |
|||
location.reload(); |
|||
}); |
|||
} |
|||
} |
|||
LanguageSwitch.template = "LanguageSwitch"; |
|||
LanguageSwitch.components = { Dropdown, DropdownItem }; |
|||
LanguageSwitch.toggleDelay = 1000; |
|||
export const systrayItem = { |
|||
Component: LanguageSwitch, |
|||
}; |
|||
registry.category("systray").add("LanguageSwitch", systrayItem, { sequence: 1 }); |
@ -0,0 +1,49 @@ |
|||
.o_kanban_view { |
|||
.oe_kanban_card, .o_kanban_record { |
|||
@for $tr from 1 through 80 { |
|||
&:nth-child(#{$tr}) { |
|||
animation:infinito_kanban_shake #{$tr * .1}s ease-in !important; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
@keyframes infinito_kanban_slide_in { |
|||
0% { transform: translateX(-100%); } |
|||
100% { transform: translateX(0); } |
|||
} |
|||
@keyframes infinito_kanban_scale { |
|||
0%, 100% { transform: translateY(0); } |
|||
50% { transform: translateY(-10px); } |
|||
} |
|||
@keyframes infinito_kanban_shake { |
|||
0% { |
|||
transform: rotate(-5deg); |
|||
opacity: 0; |
|||
} |
|||
|
|||
20% { |
|||
transform: rotate(5deg); |
|||
} |
|||
|
|||
40% { |
|||
transform: rotate(-3deg); |
|||
} |
|||
|
|||
60% { |
|||
transform: rotate(3deg); |
|||
} |
|||
|
|||
80% { |
|||
transform: rotate(-1deg); |
|||
} |
|||
|
|||
90% { |
|||
transform: rotate(1deg); |
|||
} |
|||
|
|||
100% { |
|||
transform: rotate(0deg); |
|||
opacity: 1; |
|||
} |
|||
} |
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<!-- Pop up for adding google font--> |
|||
<div t-name="backend_theme_infinito_plus.dialog.addGoogleFont"> |
|||
<div class="mb-3 row"> |
|||
<label class="col-form-label col-md-3" for="google_font_html">Google Font address</label> |
|||
<div class="col-md-9"> |
|||
<textarea id="google_font_html_infinito" |
|||
class="form-control o_input_google_font" |
|||
placeholder="https://fonts.google.com/specimen/Roboto" |
|||
style="height: 100px;"/> |
|||
<span class="float-end text-muted"> |
|||
Select one font on <a target="_blank" |
|||
href="https://fonts.google.com">fonts.google.com</a> and |
|||
copy paste the address of the font page here. |
|||
</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</templates> |
@ -0,0 +1,11 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-inherit="web.ControlPanel.Regular" t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//div[hasclass('o_cp_top_right')]" position="before"> |
|||
<!-- Showing Refresh icon in the systray--> |
|||
<button type="button" t-if="RefreshOn" |
|||
class="btn btn-refresh fa fa-refresh" |
|||
t-on-click="onRefresh"/> |
|||
</xpath> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,34 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<odoo> |
|||
<!-- Display all the added google fonts--> |
|||
<t t-name="theme_editor_sidebar_advanced_fonts"> |
|||
<div> |
|||
<h6 class="info-infinito" data-bs-toggle="popover" |
|||
data-placement="right" |
|||
data-content="All internal users can edit their Advanced |
|||
features for themself" |
|||
title="" data-original-title="Help">Fonts |
|||
</h6> |
|||
<div class="sub_style" id="js_fonts"> |
|||
<select id="infinito_font_select" |
|||
class="form-select infinito-form-select "> |
|||
<option href="#" |
|||
class="form-select infinito-form-select system-font" |
|||
t-att-data-variable="variable">System Font |
|||
</option> |
|||
<t t-foreach="data" t-as="font"> |
|||
<option href="#" |
|||
class="form-select infinito-form-select" |
|||
t-att-data-id="font.id"> |
|||
<t t-esc="font.name"/> |
|||
</option> |
|||
</t> |
|||
<option href="#" |
|||
class="form-select infinito-form-select add-font" |
|||
t-att-data-variable="variable">Add a Google Font |
|||
</option> |
|||
</select> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</odoo> |
@ -0,0 +1,52 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<templates xml:space="preserve"> |
|||
<t t-name="LanguageSwitch" owl="1"> |
|||
<!-- show dropdown with different languages available --> |
|||
<Dropdown class="'o_switch_company_menu d-none d-md-block'" |
|||
position="'bottom-end'"> |
|||
<t t-set-slot="toggler"> |
|||
<i class="fa fa-building d-lg-none"/> |
|||
<span class="oe_topbar_name d-none d-lg-block" |
|||
t-esc="this.currentLang[1]"/> |
|||
</t> |
|||
<t t-foreach="this.availableLanguages" t-as="lang" |
|||
t-key="lang_index"> |
|||
<t t-call="LanguageSwitchItem"> |
|||
<t t-set="lang" t-value="lang"/> |
|||
</t> |
|||
</t> |
|||
</Dropdown> |
|||
</t> |
|||
<t t-name="LanguageSwitchItem" owl="1"> |
|||
<DropdownItem class="'p-0 bg-white'"> |
|||
<t t-set="isLangSelected" t-value="this.currentLang[0] == lang[0]"/> |
|||
<div class="d-flex" data-menu="lang" |
|||
t-att-data-lang-key="lang[0]"> |
|||
<div |
|||
class="border-end" |
|||
t-attf-class="{{isLangSelected ? 'border-primary' : ''}}" |
|||
t-on-click.stop="() => this.toggleLang(lang[0])"> |
|||
<span class="btn btn-light border-0 p-2"> |
|||
<i class="fa fa-fw py-2" |
|||
t-att-class="isLangSelected ? 'fa-check text-primary' : ''"/> |
|||
</span> |
|||
</div> |
|||
<div |
|||
role="button" |
|||
t-att-aria-pressed="isLangSelected" |
|||
t-att-aria-label="'Switch to ' + lang[1] " |
|||
t-att-title="'Switch to ' + lang[1] " |
|||
tabindex="0" |
|||
class="d-flex flex-grow-1 align-items-center py-0 log_into ps-2" |
|||
t-att-class="isLangSelected ? 'alert-primary ms-1 me-2' : 'btn btn-light fw-normal border-0'" |
|||
t-on-click="() => this.toggleLang(lang[0])"> |
|||
<span |
|||
class='company_label pe-3' |
|||
t-att-class="isLangSelected ? 'text-900 fw-bold' : 'ms-1'"> |
|||
<t t-esc="lang[1]"/> |
|||
</span> |
|||
</div> |
|||
</div> |
|||
</DropdownItem> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,52 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<t t-name="theme_editor_sidebar_advanced" |
|||
t-inherit="backend_theme_infinito.theme_editor_sidebar_advanced" |
|||
t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//div[@id='other']" position="inside"> |
|||
<div class="card card-body"> |
|||
<div class="sidebar_left"> |
|||
<div class="wrapper"> |
|||
<div class="sub_style"> |
|||
<!-- View for enabling or disabling refresh feature--> |
|||
<div class="t_settings info-infinito" |
|||
data-bs-toggle="popover" data-placement="right" |
|||
data-content="Refresh the tree, kanban view" |
|||
title="" data-original-title="Help"> |
|||
Refresh |
|||
</div> |
|||
<label class="switch"> |
|||
<input type="checkbox" id="navbarRefreshToggler" |
|||
checked=""/> |
|||
<span class="slider round"/> |
|||
</label> |
|||
</div> |
|||
<div class="sub_style infinito_font_select"></div> |
|||
<div> |
|||
<!-- View for different selection for ChatBox feature--> |
|||
<h6 class="info-infinito" data-bs-toggle="popover" |
|||
data-placement="right" |
|||
data-content="All internal users can edit their Advanced features for themself" |
|||
title="" data-original-title="Help">Chatbox Position |
|||
</h6> |
|||
<div class="sub_style"> |
|||
<select class="form-select infinito-form-select" |
|||
id="chatbox_position"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div> |
|||
<!-- View for different selections for animations --> |
|||
<h6 class="info-infinito" data-bs-toggle="popover" |
|||
data-placement="right" |
|||
data-content="All internal users can edit their Advanced features for themself" |
|||
title="" data-original-title="Help">Animation |
|||
</h6> |
|||
<div class="sub_style"> |
|||
<select class="form-select infinito-form-select" |
|||
id="animated_view"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</xpath> |
|||
</t> |