diff --git a/code_backend_theme/__manifest__.py b/code_backend_theme/__manifest__.py deleted file mode 100644 index 3e29707..0000000 --- a/code_backend_theme/__manifest__.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -{ - "name": "Code Backend Theme V18", - "summary": "Minimalist and elegant backend theme for Odoo 18", - "description": """Attractive and modern backend theme for Odoo 18""", - "category": "Themes/Backend", - "version": "18.0.1.0.0", - "author": "Cybrosys Techno Solutions", - "company": "Cybrosys Techno Solutions", - "maintainer": "Cybrosys Techno Solutions", - "website": "https://www.cybrosys.com", - "license": "LGPL-3", - "depends": ["base", "web", "mail", "account"], # add 'account' if you patch its dashboard - "assets": { - "web.assets_backend": [ - # "code_backend_theme/static/src/scss/theme_accent.scss", - "code_backend_theme/static/src/scss/navigation_bar.scss", - "code_backend_theme/static/src/scss/datetimepicker.scss", - "code_backend_theme/static/src/scss/theme.scss", - "code_backend_theme/static/src/scss/sidebar.scss", - "code_backend_theme/static/src/js/fields/basic_fields.js", - "code_backend_theme/static/src/js/fields/graph.js", - "code_backend_theme/static/src/js/chrome/sidebar.js", - "code_backend_theme/static/src/js/chrome/sidebar_menu.js", - ], - "web.assets_frontend": [ - "code_backend_theme/static/src/scss/login.scss", - ], - "web.qweb": [ - "code_backend_theme/static/src/xml/sidebar.xml", - "code_backend_theme/static/src/xml/styles.xml", - "code_backend_theme/static/src/xml/top_bar.xml", - ], - }, - "images": [ - "static/description/banner.png", - "static/description/theme_screenshot.png", - ], - - "post_init_hook": "post_init_hook", - "installable": True, - "application": False, - "auto_install": False, -} diff --git a/code_backend_theme/assets/assets.xml b/code_backend_theme/assets/assets.xml deleted file mode 100644 index 8d5607c..0000000 --- a/code_backend_theme/assets/assets.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/inbox_notif_email/.idea/.gitignore b/inbox_notif_email/.idea/.gitignore deleted file mode 100644 index 3cb95ef..0000000 --- a/inbox_notif_email/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Datasource local storage ignored files -/../../../../../../../:\Users\Adnan Usmani\Downloads\Compressed\inbox_notif_email\.idea/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/inbox_notif_email/.idea/inbox_notif_email.iml b/inbox_notif_email/.idea/inbox_notif_email.iml deleted file mode 100644 index 92b8cab..0000000 --- a/inbox_notif_email/.idea/inbox_notif_email.iml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/inbox_notif_email/.idea/inspectionProfiles/Project_Default.xml b/inbox_notif_email/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index a5550a3..0000000 --- a/inbox_notif_email/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - \ No newline at end of file diff --git a/inbox_notif_email/.idea/inspectionProfiles/profiles_settings.xml b/inbox_notif_email/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/inbox_notif_email/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/inbox_notif_email/.idea/misc.xml b/inbox_notif_email/.idea/misc.xml deleted file mode 100644 index d1e22ec..0000000 --- a/inbox_notif_email/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/inbox_notif_email/.idea/modules.xml b/inbox_notif_email/.idea/modules.xml deleted file mode 100644 index ce31c98..0000000 --- a/inbox_notif_email/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/inbox_notif_email/.idea/vcs.xml b/inbox_notif_email/.idea/vcs.xml deleted file mode 100644 index 6c0b863..0000000 --- a/inbox_notif_email/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/odex30_base/base_custom/__init__.py b/odex30_base/base_custom/__init__.py new file mode 100644 index 0000000..308d1f6 --- /dev/null +++ b/odex30_base/base_custom/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# LCT, Life Connection Technology +# Copyright (C) 2019-2020 LCT +# +############################################################################## +from . import models + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/odex30_base/base_custom/__manifest__.py b/odex30_base/base_custom/__manifest__.py new file mode 100644 index 0000000..2214219 --- /dev/null +++ b/odex30_base/base_custom/__manifest__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# LCT, Life Connection Technology +# Copyright (C) 2011-2012 LCT +# +############################################################################## + +{ + 'name' : 'Base Custom', + 'category': 'HR-Odex', + 'version': '18.0.1.0.0', + 'author': 'Expert Co. Ltd.' , + 'website': 'http://exp-sa.com', + 'summary': 'Solving defulat groups for newly created users', + 'description' : """Add the following features: 1-Prevent granting defulat groups for newly created users """, + 'depends' : ['base','hr','hr_contract'], + 'data': [ ], + "assets": { + "web.assets_backend": [ + # Google Fonts (Montserrat) + '/base_custom/static/src/css/website_rtl.css' + ], + }, + 'auto_install': True, + 'installable': True, + 'application': True, + +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/odex30_base/base_custom/models/__init__.py b/odex30_base/base_custom/models/__init__.py new file mode 100644 index 0000000..62cbdfa --- /dev/null +++ b/odex30_base/base_custom/models/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*-# -*- coding: utf-8 -*- +############################################################################## +# +# LCT, Life Connection Technology +# Copyright (C) 2011-2012 LCT +# +############################################################################## + +from . import res_users +from . import hr_employee diff --git a/odex30_base/base_custom/models/hr_employee.py b/odex30_base/base_custom/models/hr_employee.py new file mode 100644 index 0000000..254bbef --- /dev/null +++ b/odex30_base/base_custom/models/hr_employee.py @@ -0,0 +1,47 @@ +from odoo import api, fields, models, _ + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + contract_id = fields.Many2one('hr.contract', string='Current Contract', + groups="base.group_user", + domain="[('company_id', '=', company_id)]", + help='Current contract of the employee') + + + barcode = fields.Char(string="Badge ID", help="ID used for employee identification.", groups="base.group_user", + copy=False) + birthday = fields.Date('Date of Birth', groups="base.group_user", tracking=True) + address_home_id = fields.Many2one( + 'res.partner', 'Address', + help='Enter here the private address of the employee, not the one linked to your company.', + groups="base.group_user", tracking=True, + domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]") + + certificate = fields.Selection([ + ('graduate', 'Graduate'), + ('bachelor', 'Bachelor'), + ('master', 'Master'), + ('doctor', 'Doctor'), + ('other', 'Other'), + ], 'Certificate Level', default='other', groups="base.group_user", tracking=True) + children = fields.Integer(string='Number of Children', groups="base.group_user", tracking=True) + country_of_birth = fields.Many2one('res.country', string="Country of Birth", groups="base.group_user", + tracking=True) + emergency_contact = fields.Char("Emergency Contact", groups="base.group_user", tracking=True) + emergency_phone = fields.Char("Emergency Phone", groups="base.group_user", tracking=True) + phone = fields.Char(related='address_home_id.phone', related_sudo=False, readonly=False, string="Private Phone", + groups="base.group_user") + identification_id = fields.Char(string='Identification No', groups="base.group_user", tracking=True) + km_home_work = fields.Integer(string="Home-Work Distance", groups="base.group_user", tracking=True) + permit_no = fields.Char('Work Permit No', groups="base.group_user", tracking=True) + pin = fields.Char(string="PIN", groups="base.group_user", copy=False, + help="PIN used to Check In/Out in Kiosk Mode (if enabled in Configuration).") + place_of_birth = fields.Char('Place of Birth', groups="base.group_user", tracking=True) + spouse_birthdate = fields.Date(string="Spouse Birthdate", groups="base.group_user", tracking=True) + spouse_complete_name = fields.Char(string="Spouse Complete Name", groups="base.group_user", tracking=True) + study_field = fields.Char("Field of Study", groups="base.group_user", tracking=True) + study_school = fields.Char("School", groups="base.group_user", tracking=True) + visa_expire = fields.Date('Visa Expire Date', groups="base.group_user", tracking=True) + visa_no = fields.Char('Visa No', groups="base.group_user", tracking=True) diff --git a/odex30_base/base_custom/models/res_users.py b/odex30_base/base_custom/models/res_users.py new file mode 100644 index 0000000..76e5759 --- /dev/null +++ b/odex30_base/base_custom/models/res_users.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# LCT, Life Connection Technology +# Copyright (C) 2011-2012 LCT +# +############################################################################## + +from odoo import api, fields, models, _ + +class ResUsers(models.Model): + _inherit = 'res.users' + + def _default_groups_custom(self): + """ + pervents newly created user from holding all managers groups. + """ + default_user = self.env.ref('base.group_user', raise_if_not_found=False) + return default_user + + groups_id = fields.Many2many('res.groups', 'res_groups_users_rel', 'uid', 'gid', string='Groups', default =_default_groups_custom) diff --git a/odex30_base/base_custom/static/description/icon.png b/odex30_base/base_custom/static/description/icon.png new file mode 100644 index 0000000..4141f52 Binary files /dev/null and b/odex30_base/base_custom/static/description/icon.png differ diff --git a/odex30_base/base_custom/static/src/css/website_rtl.css b/odex30_base/base_custom/static/src/css/website_rtl.css new file mode 100644 index 0000000..429b820 --- /dev/null +++ b/odex30_base/base_custom/static/src/css/website_rtl.css @@ -0,0 +1,25 @@ +@media (min-width: 768px){ + .rtl .navbar-right{ + float: left !important; + } + .rtl .navbar-right .dropdown .dropdown-menu{ + right: auto !important; + left: 0 !important; + } + .rtl .navbar-left{ + float: right !important; + } + .rtl .navbar-left .dropdown .dropdown-menu{ + left: auto !important; + right: 0 !important; + } + .navbar-nav.navbar-right:last-child{ + margin-left: auto; + } + .rtl .pull-left{ + float: right !important; + } +} + + + diff --git a/chatgpt_bot/__init__.py b/odex30_base/chatgpt_bot/__init__.py similarity index 100% rename from chatgpt_bot/__init__.py rename to odex30_base/chatgpt_bot/__init__.py diff --git a/chatgpt_bot/__manifest__.py b/odex30_base/chatgpt_bot/__manifest__.py similarity index 100% rename from chatgpt_bot/__manifest__.py rename to odex30_base/chatgpt_bot/__manifest__.py diff --git a/chatgpt_bot/controllers/__init__.py b/odex30_base/chatgpt_bot/controllers/__init__.py similarity index 100% rename from chatgpt_bot/controllers/__init__.py rename to odex30_base/chatgpt_bot/controllers/__init__.py diff --git a/chatgpt_bot/controllers/controllers.py b/odex30_base/chatgpt_bot/controllers/controllers.py similarity index 100% rename from chatgpt_bot/controllers/controllers.py rename to odex30_base/chatgpt_bot/controllers/controllers.py diff --git a/chatgpt_bot/demo/demo.xml b/odex30_base/chatgpt_bot/demo/demo.xml similarity index 100% rename from chatgpt_bot/demo/demo.xml rename to odex30_base/chatgpt_bot/demo/demo.xml diff --git a/chatgpt_bot/images/gif_chat.gif b/odex30_base/chatgpt_bot/images/gif_chat.gif similarity index 100% rename from chatgpt_bot/images/gif_chat.gif rename to odex30_base/chatgpt_bot/images/gif_chat.gif diff --git a/chatgpt_bot/images/image1.png b/odex30_base/chatgpt_bot/images/image1.png similarity index 100% rename from chatgpt_bot/images/image1.png rename to odex30_base/chatgpt_bot/images/image1.png diff --git a/chatgpt_bot/images/image2.png b/odex30_base/chatgpt_bot/images/image2.png similarity index 100% rename from chatgpt_bot/images/image2.png rename to odex30_base/chatgpt_bot/images/image2.png diff --git a/chatgpt_bot/images/image3.png b/odex30_base/chatgpt_bot/images/image3.png similarity index 100% rename from chatgpt_bot/images/image3.png rename to odex30_base/chatgpt_bot/images/image3.png diff --git a/chatgpt_bot/images/image4.png b/odex30_base/chatgpt_bot/images/image4.png similarity index 100% rename from chatgpt_bot/images/image4.png rename to odex30_base/chatgpt_bot/images/image4.png diff --git a/chatgpt_bot/models/__init__.py b/odex30_base/chatgpt_bot/models/__init__.py similarity index 100% rename from chatgpt_bot/models/__init__.py rename to odex30_base/chatgpt_bot/models/__init__.py diff --git a/chatgpt_bot/models/mail_bot.py b/odex30_base/chatgpt_bot/models/mail_bot.py similarity index 100% rename from chatgpt_bot/models/mail_bot.py rename to odex30_base/chatgpt_bot/models/mail_bot.py diff --git a/chatgpt_bot/models/res_config_setting.py b/odex30_base/chatgpt_bot/models/res_config_setting.py similarity index 100% rename from chatgpt_bot/models/res_config_setting.py rename to odex30_base/chatgpt_bot/models/res_config_setting.py diff --git a/chatgpt_bot/models/res_users.py b/odex30_base/chatgpt_bot/models/res_users.py similarity index 100% rename from chatgpt_bot/models/res_users.py rename to odex30_base/chatgpt_bot/models/res_users.py diff --git a/chatgpt_bot/security/ir.model.access.csv b/odex30_base/chatgpt_bot/security/ir.model.access.csv similarity index 100% rename from chatgpt_bot/security/ir.model.access.csv rename to odex30_base/chatgpt_bot/security/ir.model.access.csv diff --git a/chatgpt_bot/static/description/banner.png b/odex30_base/chatgpt_bot/static/description/banner.png similarity index 100% rename from chatgpt_bot/static/description/banner.png rename to odex30_base/chatgpt_bot/static/description/banner.png diff --git a/chatgpt_bot/static/description/icon.png b/odex30_base/chatgpt_bot/static/description/icon.png similarity index 100% rename from chatgpt_bot/static/description/icon.png rename to odex30_base/chatgpt_bot/static/description/icon.png diff --git a/chatgpt_bot/static/description/images/banner.png b/odex30_base/chatgpt_bot/static/description/images/banner.png similarity index 100% rename from chatgpt_bot/static/description/images/banner.png rename to odex30_base/chatgpt_bot/static/description/images/banner.png diff --git a/chatgpt_bot/static/description/images/gif_chat.gif b/odex30_base/chatgpt_bot/static/description/images/gif_chat.gif similarity index 100% rename from chatgpt_bot/static/description/images/gif_chat.gif rename to odex30_base/chatgpt_bot/static/description/images/gif_chat.gif diff --git a/chatgpt_bot/static/description/images/image1.png b/odex30_base/chatgpt_bot/static/description/images/image1.png similarity index 100% rename from chatgpt_bot/static/description/images/image1.png rename to odex30_base/chatgpt_bot/static/description/images/image1.png diff --git a/chatgpt_bot/static/description/images/image2.png b/odex30_base/chatgpt_bot/static/description/images/image2.png similarity index 100% rename from chatgpt_bot/static/description/images/image2.png rename to odex30_base/chatgpt_bot/static/description/images/image2.png diff --git a/chatgpt_bot/static/description/images/image3.png b/odex30_base/chatgpt_bot/static/description/images/image3.png similarity index 100% rename from chatgpt_bot/static/description/images/image3.png rename to odex30_base/chatgpt_bot/static/description/images/image3.png diff --git a/chatgpt_bot/static/description/images/image4.png b/odex30_base/chatgpt_bot/static/description/images/image4.png similarity index 100% rename from chatgpt_bot/static/description/images/image4.png rename to odex30_base/chatgpt_bot/static/description/images/image4.png diff --git a/chatgpt_bot/static/description/images/main_screenshot.png b/odex30_base/chatgpt_bot/static/description/images/main_screenshot.png similarity index 100% rename from chatgpt_bot/static/description/images/main_screenshot.png rename to odex30_base/chatgpt_bot/static/description/images/main_screenshot.png diff --git a/chatgpt_bot/static/description/index.html b/odex30_base/chatgpt_bot/static/description/index.html similarity index 100% rename from chatgpt_bot/static/description/index.html rename to odex30_base/chatgpt_bot/static/description/index.html diff --git a/chatgpt_bot/views/res_config_settings.xml b/odex30_base/chatgpt_bot/views/res_config_settings.xml similarity index 90% rename from chatgpt_bot/views/res_config_settings.xml rename to odex30_base/chatgpt_bot/views/res_config_settings.xml index 375cbb6..7088d99 100644 --- a/chatgpt_bot/views/res_config_settings.xml +++ b/odex30_base/chatgpt_bot/views/res_config_settings.xml @@ -5,13 +5,13 @@ res.config.settings.view.form.inherit.chatgpt res.config.settings - +
+ data-key="chatgpt_blog" data-string="ChatGPT Blog">

ChatGPT OdooBot

@@ -20,8 +20,8 @@
@@ -42,4 +42,4 @@ - + \ No newline at end of file diff --git a/code_backend_theme/README.rst b/odex30_base/code_backend_theme/README.rst similarity index 100% rename from code_backend_theme/README.rst rename to odex30_base/code_backend_theme/README.rst diff --git a/code_backend_theme/__init__.py b/odex30_base/code_backend_theme/__init__.py similarity index 100% rename from code_backend_theme/__init__.py rename to odex30_base/code_backend_theme/__init__.py diff --git a/odex30_base/code_backend_theme/__manifest__.py b/odex30_base/code_backend_theme/__manifest__.py new file mode 100644 index 0000000..6cf0790 --- /dev/null +++ b/odex30_base/code_backend_theme/__manifest__.py @@ -0,0 +1,50 @@ + +# -*- coding: utf-8 -*- +{ + "name": "Code Backend Theme ", + "summary": "Minimalist and elegant backend theme for Odoo 18", + "description": "Attractive and modern backend theme for Odoo 18", + "category": "Themes/Backend", + "version": "18.0.1.0.0", + "author": "Cybrosys Techno Solutions", + "company": "Cybrosys Techno Solutions", + "maintainer": "Cybrosys Techno Solutions", + "website": "https://www.cybrosys.com", + "license": "LGPL-3", + "depends": ["base", "web", "mail", "account"], # keep 'account' only if you extend it + "assets": { + "web.assets_backend": [ + "/code_backend_theme/static/src/scss/theme_accent.scss", + "/code_backend_theme/static/src/scss/navigation_bar.scss", + "/code_backend_theme/static/src/scss/datetimepicker.scss", + "/code_backend_theme/static/src/scss/theme.scss", + "/code_backend_theme/static/src/scss/sidebar.scss", + "/code_backend_theme/static/src/js/fields/basic_fields.js", + # "/code_backend_theme/static/src/js/fields/graph.js", + "/code_backend_theme/static/src/js/chrome/sidebar.js", + # "/code_backend_theme/static/src/js/chrome/sidebar_menu.js", + "https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap", + ], + 'web.assets_backend_lazy': [ # ← KEY CHANGE + "/code_backend_theme/static/src/js/fields/graph.js", + "/code_backend_theme/static/src/js/chrome/sidebar_menu.js", + ], + "web.assets_frontend": [ + "/code_backend_theme/static/src/scss/login.scss", + "https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap", + ], + "web.qweb": [ + "/code_backend_theme/static/src/xml/sidebar.xml", + "/code_backend_theme/static/src/xml/styles.xml", + "/code_backend_theme/static/src/xml/top_bar.xml", + ], + }, + "images": [ + "static/description/banner.png", + "static/description/theme_screenshot.png", + ], + "installable": True, + "application": False, + "auto_install": False, +} + diff --git a/code_backend_theme/doc/RELEASE_NOTES.md b/odex30_base/code_backend_theme/doc/RELEASE_NOTES.md similarity index 100% rename from code_backend_theme/doc/RELEASE_NOTES.md rename to odex30_base/code_backend_theme/doc/RELEASE_NOTES.md diff --git a/code_backend_theme/hooks.py b/odex30_base/code_backend_theme/hooks.py similarity index 100% rename from code_backend_theme/hooks.py rename to odex30_base/code_backend_theme/hooks.py diff --git a/code_backend_theme/static/description/assets/all_screens.png b/odex30_base/code_backend_theme/static/description/assets/all_screens.png similarity index 100% rename from code_backend_theme/static/description/assets/all_screens.png rename to odex30_base/code_backend_theme/static/description/assets/all_screens.png diff --git a/code_backend_theme/static/description/assets/hero.png b/odex30_base/code_backend_theme/static/description/assets/hero.png similarity index 100% rename from code_backend_theme/static/description/assets/hero.png rename to odex30_base/code_backend_theme/static/description/assets/hero.png diff --git a/code_backend_theme/static/description/assets/icons/chevron.png b/odex30_base/code_backend_theme/static/description/assets/icons/chevron.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/chevron.png rename to odex30_base/code_backend_theme/static/description/assets/icons/chevron.png diff --git a/code_backend_theme/static/description/assets/icons/cogs.png b/odex30_base/code_backend_theme/static/description/assets/icons/cogs.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/cogs.png rename to odex30_base/code_backend_theme/static/description/assets/icons/cogs.png diff --git a/code_backend_theme/static/description/assets/icons/consultation.png b/odex30_base/code_backend_theme/static/description/assets/icons/consultation.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/consultation.png rename to odex30_base/code_backend_theme/static/description/assets/icons/consultation.png diff --git a/code_backend_theme/static/description/assets/icons/ecom-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/ecom-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/ecom-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/ecom-black.png diff --git a/code_backend_theme/static/description/assets/icons/education-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/education-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/education-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/education-black.png diff --git a/code_backend_theme/static/description/assets/icons/feature-icons/document.png b/odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/document.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/feature-icons/document.png rename to odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/document.png diff --git a/code_backend_theme/static/description/assets/icons/feature-icons/down.png b/odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/down.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/feature-icons/down.png rename to odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/down.png diff --git a/code_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png b/odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png rename to odex30_base/code_backend_theme/static/description/assets/icons/feature-icons/lifebuoy.png diff --git a/code_backend_theme/static/description/assets/icons/hotel-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/hotel-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/hotel-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/hotel-black.png diff --git a/code_backend_theme/static/description/assets/icons/license.png b/odex30_base/code_backend_theme/static/description/assets/icons/license.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/license.png rename to odex30_base/code_backend_theme/static/description/assets/icons/license.png diff --git a/code_backend_theme/static/description/assets/icons/lifebuoy.png b/odex30_base/code_backend_theme/static/description/assets/icons/lifebuoy.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/lifebuoy.png rename to odex30_base/code_backend_theme/static/description/assets/icons/lifebuoy.png diff --git a/code_backend_theme/static/description/assets/icons/manufacturing-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/manufacturing-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/manufacturing-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/manufacturing-black.png diff --git a/code_backend_theme/static/description/assets/icons/pos-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/pos-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/pos-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/pos-black.png diff --git a/code_backend_theme/static/description/assets/icons/puzzle.png b/odex30_base/code_backend_theme/static/description/assets/icons/puzzle.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/puzzle.png rename to odex30_base/code_backend_theme/static/description/assets/icons/puzzle.png diff --git a/code_backend_theme/static/description/assets/icons/restaurant-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/restaurant-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/restaurant-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/restaurant-black.png diff --git a/code_backend_theme/static/description/assets/icons/service-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/service-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/service-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/service-black.png diff --git a/code_backend_theme/static/description/assets/icons/trading-black.png b/odex30_base/code_backend_theme/static/description/assets/icons/trading-black.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/trading-black.png rename to odex30_base/code_backend_theme/static/description/assets/icons/trading-black.png diff --git a/code_backend_theme/static/description/assets/icons/training.png b/odex30_base/code_backend_theme/static/description/assets/icons/training.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/training.png rename to odex30_base/code_backend_theme/static/description/assets/icons/training.png diff --git a/code_backend_theme/static/description/assets/icons/update.png b/odex30_base/code_backend_theme/static/description/assets/icons/update.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/update.png rename to odex30_base/code_backend_theme/static/description/assets/icons/update.png diff --git a/code_backend_theme/static/description/assets/icons/user.png b/odex30_base/code_backend_theme/static/description/assets/icons/user.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/user.png rename to odex30_base/code_backend_theme/static/description/assets/icons/user.png diff --git a/code_backend_theme/static/description/assets/icons/wrench.png b/odex30_base/code_backend_theme/static/description/assets/icons/wrench.png similarity index 100% rename from code_backend_theme/static/description/assets/icons/wrench.png rename to odex30_base/code_backend_theme/static/description/assets/icons/wrench.png diff --git a/code_backend_theme/static/description/assets/menu_focus.png b/odex30_base/code_backend_theme/static/description/assets/menu_focus.png similarity index 100% rename from code_backend_theme/static/description/assets/menu_focus.png rename to odex30_base/code_backend_theme/static/description/assets/menu_focus.png diff --git a/code_backend_theme/static/description/assets/resp-gif.gif b/odex30_base/code_backend_theme/static/description/assets/resp-gif.gif similarity index 100% rename from code_backend_theme/static/description/assets/resp-gif.gif rename to odex30_base/code_backend_theme/static/description/assets/resp-gif.gif diff --git a/code_backend_theme/static/description/assets/responsive.png b/odex30_base/code_backend_theme/static/description/assets/responsive.png similarity index 100% rename from code_backend_theme/static/description/assets/responsive.png rename to odex30_base/code_backend_theme/static/description/assets/responsive.png diff --git a/code_backend_theme/static/description/assets/screenshots/alert.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/alert.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/alert.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/alert.png diff --git a/code_backend_theme/static/description/assets/screenshots/apps_uninstall.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/apps_uninstall.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/apps_uninstall.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/apps_uninstall.png diff --git a/code_backend_theme/static/description/assets/screenshots/chatters.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/chatters.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/chatters.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/chatters.png diff --git a/code_backend_theme/static/description/assets/screenshots/discuss.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/discuss.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/discuss.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/discuss.png diff --git a/code_backend_theme/static/description/assets/screenshots/form.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/form.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/form.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/form.png diff --git a/code_backend_theme/static/description/assets/screenshots/form_product.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/form_product.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/form_product.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/form_product.png diff --git a/code_backend_theme/static/description/assets/screenshots/graph.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/graph.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/graph.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/graph.png diff --git a/code_backend_theme/static/description/assets/screenshots/group.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/group.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/group.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/group.png diff --git a/code_backend_theme/static/description/assets/screenshots/invoice.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/invoice.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/invoice.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/invoice.png diff --git a/code_backend_theme/static/description/assets/screenshots/kanban_empl.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_empl.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kanban_empl.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_empl.png diff --git a/code_backend_theme/static/description/assets/screenshots/kanban_group.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_group.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kanban_group.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_group.png diff --git a/code_backend_theme/static/description/assets/screenshots/kanban_product.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_product.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kanban_product.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_product.png diff --git a/code_backend_theme/static/description/assets/screenshots/kanban_recruits.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_recruits.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kanban_recruits.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_recruits.png diff --git a/code_backend_theme/static/description/assets/screenshots/kanban_sale.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_sale.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kanban_sale.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kanban_sale.png diff --git a/code_backend_theme/static/description/assets/screenshots/kiosk.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/kiosk.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/kiosk.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/kiosk.png diff --git a/code_backend_theme/static/description/assets/screenshots/list_purchase.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/list_purchase.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/list_purchase.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/list_purchase.png diff --git a/code_backend_theme/static/description/assets/screenshots/list_sales.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/list_sales.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/list_sales.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/list_sales.png diff --git a/code_backend_theme/static/description/assets/screenshots/login.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/login.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/login.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/login.png diff --git a/code_backend_theme/static/description/assets/screenshots/modal.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/modal.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/modal.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/modal.png diff --git a/code_backend_theme/static/description/assets/screenshots/settings.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/settings.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/settings.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/settings.png diff --git a/code_backend_theme/static/description/assets/screenshots/sidebar-gif.gif b/odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar-gif.gif similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/sidebar-gif.gif rename to odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar-gif.gif diff --git a/code_backend_theme/static/description/assets/screenshots/sidebar_list.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar_list.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/sidebar_list.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar_list.png diff --git a/code_backend_theme/static/description/assets/screenshots/sidebar_settings.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar_settings.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/sidebar_settings.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/sidebar_settings.png diff --git a/code_backend_theme/static/description/assets/screenshots/tab.png b/odex30_base/code_backend_theme/static/description/assets/screenshots/tab.png similarity index 100% rename from code_backend_theme/static/description/assets/screenshots/tab.png rename to odex30_base/code_backend_theme/static/description/assets/screenshots/tab.png diff --git a/code_backend_theme/static/description/banner.png b/odex30_base/code_backend_theme/static/description/banner.png similarity index 100% rename from code_backend_theme/static/description/banner.png rename to odex30_base/code_backend_theme/static/description/banner.png diff --git a/code_backend_theme/static/description/icon.png b/odex30_base/code_backend_theme/static/description/icon.png similarity index 100% rename from code_backend_theme/static/description/icon.png rename to odex30_base/code_backend_theme/static/description/icon.png diff --git a/code_backend_theme/static/description/index.html b/odex30_base/code_backend_theme/static/description/index.html similarity index 100% rename from code_backend_theme/static/description/index.html rename to odex30_base/code_backend_theme/static/description/index.html diff --git a/code_backend_theme/static/description/theme_screenshot.png b/odex30_base/code_backend_theme/static/description/theme_screenshot.png similarity index 100% rename from code_backend_theme/static/description/theme_screenshot.png rename to odex30_base/code_backend_theme/static/description/theme_screenshot.png diff --git a/code_backend_theme/static/src/img/code_logo.png b/odex30_base/code_backend_theme/static/src/img/code_logo.png similarity index 100% rename from code_backend_theme/static/src/img/code_logo.png rename to odex30_base/code_backend_theme/static/src/img/code_logo.png diff --git a/code_backend_theme/static/src/img/icons/Attendances.png b/odex30_base/code_backend_theme/static/src/img/icons/Attendances.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Attendances.png rename to odex30_base/code_backend_theme/static/src/img/icons/Attendances.png diff --git a/code_backend_theme/static/src/img/icons/CRM.png b/odex30_base/code_backend_theme/static/src/img/icons/CRM.png similarity index 100% rename from code_backend_theme/static/src/img/icons/CRM.png rename to odex30_base/code_backend_theme/static/src/img/icons/CRM.png diff --git a/code_backend_theme/static/src/img/icons/Calendar.png b/odex30_base/code_backend_theme/static/src/img/icons/Calendar.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Calendar.png rename to odex30_base/code_backend_theme/static/src/img/icons/Calendar.png diff --git a/code_backend_theme/static/src/img/icons/Contacts.png b/odex30_base/code_backend_theme/static/src/img/icons/Contacts.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Contacts.png rename to odex30_base/code_backend_theme/static/src/img/icons/Contacts.png diff --git a/code_backend_theme/static/src/img/icons/Dashboards.png b/odex30_base/code_backend_theme/static/src/img/icons/Dashboards.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Dashboards.png rename to odex30_base/code_backend_theme/static/src/img/icons/Dashboards.png diff --git a/code_backend_theme/static/src/img/icons/Email Marketing.png b/odex30_base/code_backend_theme/static/src/img/icons/Email Marketing.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Email Marketing.png rename to odex30_base/code_backend_theme/static/src/img/icons/Email Marketing.png diff --git a/code_backend_theme/static/src/img/icons/Employees.png b/odex30_base/code_backend_theme/static/src/img/icons/Employees.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Employees.png rename to odex30_base/code_backend_theme/static/src/img/icons/Employees.png diff --git a/code_backend_theme/static/src/img/icons/Events.png b/odex30_base/code_backend_theme/static/src/img/icons/Events.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Events.png rename to odex30_base/code_backend_theme/static/src/img/icons/Events.png diff --git a/code_backend_theme/static/src/img/icons/Expenses.png b/odex30_base/code_backend_theme/static/src/img/icons/Expenses.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Expenses.png rename to odex30_base/code_backend_theme/static/src/img/icons/Expenses.png diff --git a/code_backend_theme/static/src/img/icons/Fleet.png b/odex30_base/code_backend_theme/static/src/img/icons/Fleet.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Fleet.png rename to odex30_base/code_backend_theme/static/src/img/icons/Fleet.png diff --git a/code_backend_theme/static/src/img/icons/Inventory.png b/odex30_base/code_backend_theme/static/src/img/icons/Inventory.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Inventory.png rename to odex30_base/code_backend_theme/static/src/img/icons/Inventory.png diff --git a/code_backend_theme/static/src/img/icons/Invoicing.png b/odex30_base/code_backend_theme/static/src/img/icons/Invoicing.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Invoicing.png rename to odex30_base/code_backend_theme/static/src/img/icons/Invoicing.png diff --git a/code_backend_theme/static/src/img/icons/Link Tracker.png b/odex30_base/code_backend_theme/static/src/img/icons/Link Tracker.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Link Tracker.png rename to odex30_base/code_backend_theme/static/src/img/icons/Link Tracker.png diff --git a/code_backend_theme/static/src/img/icons/Live Chat.png b/odex30_base/code_backend_theme/static/src/img/icons/Live Chat.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Live Chat.png rename to odex30_base/code_backend_theme/static/src/img/icons/Live Chat.png diff --git a/code_backend_theme/static/src/img/icons/Lunch.png b/odex30_base/code_backend_theme/static/src/img/icons/Lunch.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Lunch.png rename to odex30_base/code_backend_theme/static/src/img/icons/Lunch.png diff --git a/code_backend_theme/static/src/img/icons/Maintenance.png b/odex30_base/code_backend_theme/static/src/img/icons/Maintenance.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Maintenance.png rename to odex30_base/code_backend_theme/static/src/img/icons/Maintenance.png diff --git a/code_backend_theme/static/src/img/icons/Manufacturing.png b/odex30_base/code_backend_theme/static/src/img/icons/Manufacturing.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Manufacturing.png rename to odex30_base/code_backend_theme/static/src/img/icons/Manufacturing.png diff --git a/code_backend_theme/static/src/img/icons/Members.png b/odex30_base/code_backend_theme/static/src/img/icons/Members.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Members.png rename to odex30_base/code_backend_theme/static/src/img/icons/Members.png diff --git a/code_backend_theme/static/src/img/icons/Note.png b/odex30_base/code_backend_theme/static/src/img/icons/Note.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Note.png rename to odex30_base/code_backend_theme/static/src/img/icons/Note.png diff --git a/code_backend_theme/static/src/img/icons/Point of Sale.png b/odex30_base/code_backend_theme/static/src/img/icons/Point of Sale.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Point of Sale.png rename to odex30_base/code_backend_theme/static/src/img/icons/Point of Sale.png diff --git a/code_backend_theme/static/src/img/icons/Project.png b/odex30_base/code_backend_theme/static/src/img/icons/Project.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Project.png rename to odex30_base/code_backend_theme/static/src/img/icons/Project.png diff --git a/code_backend_theme/static/src/img/icons/Purchase.png b/odex30_base/code_backend_theme/static/src/img/icons/Purchase.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Purchase.png rename to odex30_base/code_backend_theme/static/src/img/icons/Purchase.png diff --git a/code_backend_theme/static/src/img/icons/Recruitment.png b/odex30_base/code_backend_theme/static/src/img/icons/Recruitment.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Recruitment.png rename to odex30_base/code_backend_theme/static/src/img/icons/Recruitment.png diff --git a/code_backend_theme/static/src/img/icons/Repairs.png b/odex30_base/code_backend_theme/static/src/img/icons/Repairs.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Repairs.png rename to odex30_base/code_backend_theme/static/src/img/icons/Repairs.png diff --git a/code_backend_theme/static/src/img/icons/SMS Marketing.png b/odex30_base/code_backend_theme/static/src/img/icons/SMS Marketing.png similarity index 100% rename from code_backend_theme/static/src/img/icons/SMS Marketing.png rename to odex30_base/code_backend_theme/static/src/img/icons/SMS Marketing.png diff --git a/code_backend_theme/static/src/img/icons/Sales.png b/odex30_base/code_backend_theme/static/src/img/icons/Sales.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Sales.png rename to odex30_base/code_backend_theme/static/src/img/icons/Sales.png diff --git a/code_backend_theme/static/src/img/icons/Surveys.png b/odex30_base/code_backend_theme/static/src/img/icons/Surveys.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Surveys.png rename to odex30_base/code_backend_theme/static/src/img/icons/Surveys.png diff --git a/code_backend_theme/static/src/img/icons/Time Off.png b/odex30_base/code_backend_theme/static/src/img/icons/Time Off.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Time Off.png rename to odex30_base/code_backend_theme/static/src/img/icons/Time Off.png diff --git a/code_backend_theme/static/src/img/icons/Timesheets.png b/odex30_base/code_backend_theme/static/src/img/icons/Timesheets.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Timesheets.png rename to odex30_base/code_backend_theme/static/src/img/icons/Timesheets.png diff --git a/code_backend_theme/static/src/img/icons/Website.png b/odex30_base/code_backend_theme/static/src/img/icons/Website.png similarity index 100% rename from code_backend_theme/static/src/img/icons/Website.png rename to odex30_base/code_backend_theme/static/src/img/icons/Website.png diff --git a/code_backend_theme/static/src/img/icons/apps.png b/odex30_base/code_backend_theme/static/src/img/icons/apps.png similarity index 100% rename from code_backend_theme/static/src/img/icons/apps.png rename to odex30_base/code_backend_theme/static/src/img/icons/apps.png diff --git a/code_backend_theme/static/src/img/icons/close.png b/odex30_base/code_backend_theme/static/src/img/icons/close.png similarity index 100% rename from code_backend_theme/static/src/img/icons/close.png rename to odex30_base/code_backend_theme/static/src/img/icons/close.png diff --git a/code_backend_theme/static/src/img/icons/discuss.png b/odex30_base/code_backend_theme/static/src/img/icons/discuss.png similarity index 100% rename from code_backend_theme/static/src/img/icons/discuss.png rename to odex30_base/code_backend_theme/static/src/img/icons/discuss.png diff --git a/code_backend_theme/static/src/img/icons/eLearning.png b/odex30_base/code_backend_theme/static/src/img/icons/eLearning.png similarity index 100% rename from code_backend_theme/static/src/img/icons/eLearning.png rename to odex30_base/code_backend_theme/static/src/img/icons/eLearning.png diff --git a/code_backend_theme/static/src/img/icons/settings.png b/odex30_base/code_backend_theme/static/src/img/icons/settings.png similarity index 100% rename from code_backend_theme/static/src/img/icons/settings.png rename to odex30_base/code_backend_theme/static/src/img/icons/settings.png diff --git a/odex30_base/code_backend_theme/static/src/js/chrome/sidebar.js b/odex30_base/code_backend_theme/static/src/js/chrome/sidebar.js new file mode 100644 index 0000000..a7600a9 --- /dev/null +++ b/odex30_base/code_backend_theme/static/src/js/chrome/sidebar.js @@ -0,0 +1,37 @@ +/** @odoo-module **/ + +import { Component, useState } from "@odoo/owl"; + +export class SideBar extends Component { + static template = "code_backend_theme.Sidebar"; + + setup() { + this.state = useState({ + apps: this.props.menuData.children.map(appMenuData => ({ + actionID: parseInt(appMenuData.action.split(',')[1]), + menuID: appMenuData.id, + name: appMenuData.name, + xmlID: appMenuData.xmlid, + web_icon_data: appMenuData.web_icon_data, + })) + }); + } + + getApps() { + return this.state.apps; + } + + _openApp(app) { + this.props.onAppClicked({ + action_id: app.actionID, + menu_id: app.menuID, + }); + } + + _handleCloseSidebar() { + // This can trigger an event or call a parent method + if (this.props.onCloseSidebar) { + this.props.onCloseSidebar(); + } + } +} \ No newline at end of file diff --git a/odex30_base/code_backend_theme/static/src/js/chrome/sidebar_menu.js b/odex30_base/code_backend_theme/static/src/js/chrome/sidebar_menu.js new file mode 100644 index 0000000..ff9cbaa --- /dev/null +++ b/odex30_base/code_backend_theme/static/src/js/chrome/sidebar_menu.js @@ -0,0 +1,178 @@ +/** @odoo-module **/ + +import { patch } from "@web/core/utils/patch"; +import { Menu } from "@web/webclient/menu/menu"; +import { SideBar } from "./sidebar"; // Adjust the path to where your SideBar component is located + +patch(Menu.prototype, 'code_backend_theme.SidebarMenu', { + async start() { + const res = await this._super(...arguments); + + // Create and mount the sidebar + if (this.sidebar_apps) { + this._sideBar = new SideBar(this, { + menuData: this.menuData, + onAppClicked: (payload) => this._onAppClicked(payload) + }); + await this._sideBar.mount(this.sidebar_apps); + } + + // Initialize sidebar toggle functionality + this._initializeSidebarToggle(); + + return res; + }, + + _onAppClicked(payload) { + // Handle app click event + this.trigger_up('switch_menu', { + action_id: payload.action_id, + menu_id: payload.menu_id, + }); + }, + + _initializeSidebarToggle() { + // Use OWL's event system or native DOM events instead of jQuery + document.addEventListener('click', (event) => { + if (event.target.id === 'closeSidebar') { + this._handleCloseSidebar(); + } else if (event.target.id === 'openSidebar') { + this._handleOpenSidebar(); + } else if (event.target.closest('.sidebar a')) { + this._handleSidebarItemClick(event); + } + }); + }, + + _handleCloseSidebar() { + document.getElementById('closeSidebar').style.display = 'none'; + document.getElementById('openSidebar').style.display = 'block'; + + // Hide sidebar panel + const sidebarPanel = document.getElementById('sidebar_panel'); + if (sidebarPanel) { + sidebarPanel.style.display = 'none'; + } + + // Update margins + const actionManager = document.querySelector('.o_action_manager'); + const topHeading = document.querySelector('.top_heading'); + + if (actionManager) { + actionManager.style.marginLeft = '0px'; + } + if (topHeading) { + topHeading.style.marginLeft = '0px'; + } + + // Remove classes + this._removeClasses(); + }, + + _handleOpenSidebar() { + document.getElementById('openSidebar').style.display = 'none'; + document.getElementById('closeSidebar').style.display = 'block'; + + // Show sidebar panel + const sidebarPanel = document.getElementById('sidebar_panel'); + if (sidebarPanel) { + sidebarPanel.style.display = 'block'; + } + + // Update margins + const actionManager = document.querySelector('.o_action_manager'); + const topHeading = document.querySelector('.top_heading'); + + if (actionManager) { + actionManager.style.marginLeft = '200px'; + actionManager.style.transition = 'all .1s linear'; + } + if (topHeading) { + topHeading.style.marginLeft = '180px'; + topHeading.style.transition = 'all .1s linear'; + } + + // Add classes + this._addClasses(); + }, + + _handleSidebarItemClick(event) { + const menuItem = event.target.closest('.sidebar a'); + if (menuItem) { + // Update active state + const menuItems = document.querySelectorAll('.sidebar a'); + menuItems.forEach(item => item.classList.remove('active')); + menuItem.classList.add('active'); + + // Get the id and update header + const id = menuItem.dataset.id; + if (id) { + const header = document.querySelector('header'); + if (header) { + header.className = id; + } + } + + // Close sidebar and reset styles + this._handleCloseSidebar(); + } + }, + + _addClasses() { + const navbar = document.querySelector('.o_main_navbar'); + if (navbar) { + const navbarId = navbar.dataset.id; + if (navbarId) { + document.querySelector('nav')?.classList.add(navbarId); + } + navbar.classList.add('small_nav'); + } + + const actionManager = document.querySelector('.o_action_manager'); + if (actionManager) { + const actionManagerId = actionManager.dataset.id; + if (actionManagerId) { + document.querySelector('div')?.classList.add(actionManagerId); + } + actionManager.classList.add('sidebar_margin'); + } + + const topHeading = document.querySelector('.top_heading'); + if (topHeading) { + const topHeadId = topHeading.dataset.id; + if (topHeadId) { + document.querySelector('div')?.classList.add(topHeadId); + } + topHeading.classList.add('sidebar_margin'); + } + }, + + _removeClasses() { + const navbar = document.querySelector('.o_main_navbar'); + if (navbar) { + const navbarId = navbar.dataset.id; + if (navbarId) { + document.querySelector('nav')?.classList.remove(navbarId); + } + navbar.classList.remove('small_nav'); + } + + const actionManager = document.querySelector('.o_action_manager'); + if (actionManager) { + const actionManagerId = actionManager.dataset.id; + if (actionManagerId) { + document.querySelector('div')?.classList.remove(actionManagerId); + } + actionManager.classList.remove('sidebar_margin'); + } + + const topHeading = document.querySelector('.top_heading'); + if (topHeading) { + const topHeadId = topHeading.dataset.id; + if (topHeadId) { + document.querySelector('div')?.classList.remove(topHeadId); + } + topHeading.classList.remove('sidebar_margin'); + } + } +}); \ No newline at end of file diff --git a/code_backend_theme/static/src/js/fields/basic_fields.js b/odex30_base/code_backend_theme/static/src/js/fields/basic_fields.js similarity index 59% rename from code_backend_theme/static/src/js/fields/basic_fields.js rename to odex30_base/code_backend_theme/static/src/js/fields/basic_fields.js index e525bf4..0f4edec 100644 --- a/code_backend_theme/static/src/js/fields/basic_fields.js +++ b/odex30_base/code_backend_theme/static/src/js/fields/basic_fields.js @@ -1,37 +1,31 @@ /** @odoo-module **/ import { patch } from "@web/core/utils/patch"; -import { ChartRenderer } from "@web/views/graph/chart_renderer"; // ✅ new graph renderer -import { Chart } from "web.chartjs"; // ✅ Chart.js must be imported explicitly +import { JournalDashboardGraphField } from "@web/views/fields/journal_dashboard_graph/journal_dashboard_graph_field"; -patch(ChartRenderer.prototype, "code_backend_theme.fields", { - _getBarChartConfig() { +patch(JournalDashboardGraphField, { + getBarChartConfig() { const data = []; const labels = []; const backgroundColor = []; - this.props.data[0].values.forEach((pt) => { + this.data[0].values.forEach((pt) => { data.push(pt.value); labels.push(pt.label); - const color = - pt.type === "past" - ? "#ccbdc8" - : pt.type === "future" - ? "#f1b44c" - : "#556ee6"; + const color = pt.type === 'past' ? '#ccbdc8' : (pt.type === 'future' ? '#f1b44c' : '#556ee6'); backgroundColor.push(color); }); - + return { type: "bar", data: { labels, datasets: [ { + backgroundColor, data, fill: "start", - label: this.props.data[0].key, - backgroundColor, + label: this.data[0].key, }, ], }, @@ -39,19 +33,27 @@ patch(ChartRenderer.prototype, "code_backend_theme.fields", { plugins: { legend: { display: false }, tooltip: { + enabled: !this.data[0].is_sample_data, intersect: false, position: "nearest", caretSize: 0, }, }, scales: { - y: { display: false }, // ✅ new Chart.js v3+ syntax + y: { + display: false, + }, + x: { + display: false, + }, }, maintainAspectRatio: false, elements: { - line: { tension: 0.000001 }, + line: { + tension: 0.000001, + }, }, }, }; }, -}); +}); \ No newline at end of file diff --git a/code_backend_theme/static/src/js/fields/graph.js b/odex30_base/code_backend_theme/static/src/js/fields/graph.js similarity index 81% rename from code_backend_theme/static/src/js/fields/graph.js rename to odex30_base/code_backend_theme/static/src/js/fields/graph.js index 64a7594..aa558a6 100644 --- a/code_backend_theme/static/src/js/fields/graph.js +++ b/odex30_base/code_backend_theme/static/src/js/fields/graph.js @@ -1,8 +1,7 @@ /** @odoo-module **/ -import { patch } from "@web/core/utils/patch"; import { GraphRenderer } from "@web/views/graph/graph_renderer"; -import { Chart } from "web.chartjs"; +import { patch } from "@web/core/utils/patch"; const MyCOLORS = [ "#556ee6", "#f1b44c", "#50a5f1", "#ffbb78", "#34c38f", "#98df8a", "#d62728", @@ -17,21 +16,23 @@ function hexToRGBA(hex, opacity) { return `rgba(${rgb},${opacity})`; } -patch(GraphRenderer.prototype, "code_backend_theme.graph", { +patch(GraphRenderer.prototype, { _getMyColor(index) { return MyCOLORS[index % MyCOLOR_NB]; }, _renderBarChart(dataPoints) { const data = this._prepareData(dataPoints); + data.datasets.forEach((dataset, index) => { - dataset.stack = this.state.stacked ? this.state.origins[dataset.originIndex] : undefined; + dataset.stack = this.model.metaData.stacked ? this.model.metaData.origins[dataset.originIndex] : undefined; dataset.backgroundColor = this._getMyColor(index); }); const options = this._prepareOptions(data.datasets.length); - const ctx = document.getElementById(this.chartId); - this.chart = new Chart(ctx, { + const canvas = this.canvasRef.el; + + this.chart = new Chart(canvas, { type: "bar", data, options, @@ -40,8 +41,9 @@ patch(GraphRenderer.prototype, "code_backend_theme.graph", { _renderLineChart(dataPoints) { const data = this._prepareData(dataPoints); + data.datasets.forEach((dataset, index) => { - if (this.state.processedGroupBy.length <= 1 && this.state.origins.length > 1) { + if (this.model.metaData.groupBy.length <= 1 && this.model.metaData.origins.length > 1) { if (dataset.originIndex === 0) { dataset.fill = "origin"; dataset.backgroundColor = hexToRGBA(MyCOLORS[0], 0.4); @@ -54,9 +56,11 @@ patch(GraphRenderer.prototype, "code_backend_theme.graph", { } else { dataset.borderColor = this._getMyColor(index); } + if (data.labels.length === 1) { dataset.data.unshift(undefined); } + dataset.pointBackgroundColor = dataset.borderColor; dataset.pointBorderColor = "rgba(0,0,0,0.2)"; }); @@ -69,14 +73,15 @@ patch(GraphRenderer.prototype, "code_backend_theme.graph", { data.labels = data.labels.length > 1 ? data.labels - : [].concat([[[""]]], data.labels, [[[""]]]); + : [].concat([[""]], data.labels, [[""]]); const options = this._prepareOptions(data.datasets.length); - const ctx = document.getElementById(this.chartId); - this.chart = new Chart(ctx, { + const canvas = this.canvasRef.el; + + this.chart = new Chart(canvas, { type: "line", data, options, }); }, -}); +}); \ No newline at end of file diff --git a/code_backend_theme/static/src/scss/datetimepicker.scss b/odex30_base/code_backend_theme/static/src/scss/datetimepicker.scss similarity index 100% rename from code_backend_theme/static/src/scss/datetimepicker.scss rename to odex30_base/code_backend_theme/static/src/scss/datetimepicker.scss diff --git a/code_backend_theme/static/src/scss/login.scss b/odex30_base/code_backend_theme/static/src/scss/login.scss similarity index 100% rename from code_backend_theme/static/src/scss/login.scss rename to odex30_base/code_backend_theme/static/src/scss/login.scss diff --git a/code_backend_theme/static/src/scss/navigation_bar.scss b/odex30_base/code_backend_theme/static/src/scss/navigation_bar.scss similarity index 100% rename from code_backend_theme/static/src/scss/navigation_bar.scss rename to odex30_base/code_backend_theme/static/src/scss/navigation_bar.scss diff --git a/code_backend_theme/static/src/scss/sidebar.scss b/odex30_base/code_backend_theme/static/src/scss/sidebar.scss similarity index 100% rename from code_backend_theme/static/src/scss/sidebar.scss rename to odex30_base/code_backend_theme/static/src/scss/sidebar.scss diff --git a/code_backend_theme/static/src/scss/theme.scss b/odex30_base/code_backend_theme/static/src/scss/theme.scss similarity index 100% rename from code_backend_theme/static/src/scss/theme.scss rename to odex30_base/code_backend_theme/static/src/scss/theme.scss diff --git a/code_backend_theme/static/src/scss/theme_accent.scss b/odex30_base/code_backend_theme/static/src/scss/theme_accent.scss similarity index 100% rename from code_backend_theme/static/src/scss/theme_accent.scss rename to odex30_base/code_backend_theme/static/src/scss/theme_accent.scss diff --git a/code_backend_theme/static/src/xml/sidebar.xml b/odex30_base/code_backend_theme/static/src/xml/sidebar.xml similarity index 63% rename from code_backend_theme/static/src/xml/sidebar.xml rename to odex30_base/code_backend_theme/static/src/xml/sidebar.xml index f1ea949..29d6239 100644 --- a/code_backend_theme/static/src/xml/sidebar.xml +++ b/odex30_base/code_backend_theme/static/src/xml/sidebar.xml @@ -1,9 +1,15 @@ + + +