diff --git a/odex25_base/sfta_std_backend_theme/__init__.py b/odex25_base/sfta_std_backend_theme/__init__.py new file mode 100644 index 000000000..5d65c3bdb --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/__init__.py @@ -0,0 +1 @@ +from .hooks import test_pre_init_hook, test_post_init_hook \ No newline at end of file diff --git a/odex25_base/sfta_std_backend_theme/__manifest__.py b/odex25_base/sfta_std_backend_theme/__manifest__.py new file mode 100644 index 000000000..08c0792c4 --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Saudi Food & Drug Authority Theme', + 'category': 'Tools', + 'version': '0.1', + 'summary': 'Customization for backend and forntend themes built for Saudi Food & Drug Authority', + 'description': 'Saudi Food & Drug Authority Theme', + 'author': "Expert Co. Ltd.", + 'website': "https://www.exp-sa.com", + 'depends': ['web','odex25_web'], + 'data': [ + 'views/assets.xml', + 'views/icons.xml', + 'views/settings.xml', + ], + "qweb": [ + 'static/src/xml/*' + ], + 'license': 'LGPL-3', + 'pre_init_hook': 'test_pre_init_hook', + 'post_init_hook': 'test_post_init_hook', + 'installable': True, + 'application': False, + 'auto_install': False, +} + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/odex25_base/sfta_std_backend_theme/hooks.py b/odex25_base/sfta_std_backend_theme/hooks.py new file mode 100644 index 000000000..e90ea692b --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/hooks.py @@ -0,0 +1,646 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# 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 . +# +############################################################################# + +import base64 + +from odoo import api, SUPERUSER_ID +from odoo.modules import get_module_resource + + +def test_pre_init_hook(cr): + """Hooks for Changing Menu Web_icon""" + + env = api.Environment(cr, SUPERUSER_ID, {}) + menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)]) + + for menu in menu_item: + if menu.name == 'Contacts': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'contact.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Link Tracker': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'link_tracker.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Dashboards': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Sales': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'sales.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Accounting': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Inventory': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'inventory.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Purchase': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'purchase.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Calendar': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'calendar.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'CRM': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'crm.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Note': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'notes.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Website': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'website.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Point of Sale': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'pos.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Manufacturing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'manufacturing.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Repairs': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'repair.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Email Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'email_market.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'SMS Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'sms.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Project': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'project.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Surveys': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'surveys.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Employees': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'employees.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Recruitment': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'recruitment.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Attendances': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'attendances.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Time Off': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'time-off.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Expenses': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'expenses.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Maintenance': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'maintenance.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Live Chat': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'new-live-chat.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Lunch': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'lunch.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Fleet': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'fleet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Timesheets': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'timesheet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Events': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'events.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'eLearning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'e-learning.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Membership': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'membership.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Members': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'members.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + + if menu.name == 'Subscriptions': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'subscription.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Documents': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'documents.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Rental': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'rental.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Marketing Automation': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'marketing_automation.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'IoT': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'iot.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Helpdesk': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'help.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Planning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'planning.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Appraisal': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'appraisal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Consolidation': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'consolidation.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Payroll': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'payaroll.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Barcode': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'barcode.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Quality': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'quality.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'PLM': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'plm.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Field Service': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'field-service.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Data Cleaning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'clean-code.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Approvals': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'approvals.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Referrals': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'referral.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Discuss': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'discuss.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Social Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'like.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Document Management System': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'documents.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Asset Extend': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'assest-manager.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Odex25 Accounting': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Petty Cash': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'money.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Task Logs': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'task-log.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Base': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'System Notification': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'notification.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Initiative Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'goal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Sign': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Recurring - Contracts Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'renewal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Assets Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'assets.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Benefit Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'benefit_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'My Dashboard': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'my_dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Transactions Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'transactions_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Real Estate': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'real_estate.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Real Estate Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'real_estate_marketing.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Kafalat System': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'kafalat_system.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'KPI': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'kpi.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Timesheet': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'timesheet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Email Market': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'email_market.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Workflow': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'workflow.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Takaful Settings': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'takaful_settings.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Empowerment Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'empowerment_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Invoicing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'invoice.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + + +def test_post_init_hook(cr, registry): + """post init hook""" + + env = api.Environment(cr, SUPERUSER_ID, {}) + menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)]) + + for menu in menu_item: + if menu.name == 'Contacts': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'contact.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Link Tracker': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'link_tracker.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Dashboards': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Sales': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'sales.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Accounting': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Inventory': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'inventory.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Purchase': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'purchase.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Calendar': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'calendar.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'CRM': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'crm.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Note': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'notes.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Website': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'website.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Point of Sale': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'pos.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Manufacturing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'manufacturing.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Repairs': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'repair.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Email Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'email_market.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'SMS Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'sms.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Project': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'project.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Surveys': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'surveys.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Employees': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'employees.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Recruitment': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'recruitment.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Attendances': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'attendances.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Time Off': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'time-off.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Expenses': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'expenses.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Maintenance': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'maintenance.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Live Chat': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'new-live-chat.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Lunch': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'lunch.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Fleet': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'fleet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Timesheets': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'timesheet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Events': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'events.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'eLearning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'e-learning.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Membership': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'membership.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Members': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'members.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + + if menu.name == 'Subscriptions': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'subscription.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Documents': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'documents.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Rental': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'rental.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Marketing Automation': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'marketing_automation.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'IoT': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'iot.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Helpdesk': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'help.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Planning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'planning.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Appraisal': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'appraisal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Consolidation': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'consolidation.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Payroll': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'payaroll.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Barcode': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'barcode.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Quality': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'quality.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'PLM': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'plm.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Field Service': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'field-service.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Data Cleaning': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'clean-code.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Approvals': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'approvals.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Referrals': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'referral.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Discuss': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'discuss.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Social Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'like.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Document Management System': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'documents.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Asset Extend': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'assest-manager.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Odex25 Accounting': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Petty Cash': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'money.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Task Logs': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'task-log.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Base': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'System Notification': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'notification.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Initiative Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'goal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Sign': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Recurring - Contracts Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'renewal.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Assets Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'assets.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Benefit Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'benefit_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'My Dashboard': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'my_dashboard.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Transactions Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'transactions_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Real Estate': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'real_estate.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Real Estate Marketing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'real_estate_marketing.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Kafalat System': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'kafalat_system.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'KPI': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'kpi.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Timesheet': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'timesheet.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Email Market': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'email_market.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Workflow': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'workflow.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Takaful Settings': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'takaful_settings.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Empowerment Management': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'empowerment_management.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) + if menu.name == 'Invoicing': + img_path = get_module_resource( + 'sfta_std_backend_theme', 'static', 'src', 'img', 'icons', 'invoice.png') + menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())}) diff --git a/odex25_base/sfta_std_backend_theme/static/description/icon.png b/odex25_base/sfta_std_backend_theme/static/description/icon.png new file mode 100644 index 000000000..a37b5967b Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/icon.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/description/index.html b/odex25_base/sfta_std_backend_theme/static/description/index.html new file mode 100644 index 000000000..c2182a0df --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/static/description/index.html @@ -0,0 +1,83 @@ +
+
+

+ ONE OF ODEX MODULES

+
+ ODEX system is over than 200+ modules developed by love of Expert Company, based on ODEX system +
+ .to effectively suite's Saudi and Arabic market needs.It is the first Arabic open source ERP and all-in-one + solution +
+
+
+ +
+
+

+ Contact Us +

+
+
+
+
+ +
+
+ + + +
+

+ + exposa + +

+
+
+
+ + + +
+

+ + exposa + +

+
+ +
+
+
+
+ +
+
diff --git a/odex25_base/sfta_std_backend_theme/static/description/internet.png b/odex25_base/sfta_std_backend_theme/static/description/internet.png new file mode 100644 index 000000000..a89809bfa Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/internet.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/description/linkedin.png b/odex25_base/sfta_std_backend_theme/static/description/linkedin.png new file mode 100644 index 000000000..a0fe09caa Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/linkedin.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/description/mail.png b/odex25_base/sfta_std_backend_theme/static/description/mail.png new file mode 100644 index 000000000..bc5a4de2a Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/mail.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/description/odex.png b/odex25_base/sfta_std_backend_theme/static/description/odex.png new file mode 100644 index 000000000..de82c0ef4 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/odex.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/description/twitter.png b/odex25_base/sfta_std_backend_theme/static/description/twitter.png new file mode 100644 index 000000000..983f325a3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/description/twitter.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukrabold.otf b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukrabold.otf new file mode 100644 index 000000000..09046c826 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukrabold.otf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukralight.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukralight.ttf new file mode 100644 index 000000000..1c9c6b169 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukralight.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukraregular.otf b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukraregular.otf new file mode 100644 index 000000000..4e447f03b Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/29ltbukraregular.otf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.eot b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.eot new file mode 100644 index 000000000..c98ced39f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.eot differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.ttf new file mode 100644 index 000000000..650919e26 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff new file mode 100644 index 000000000..565c0036b Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff2 b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff2 new file mode 100644 index 000000000..27f95d004 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Bold.woff2 differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.eot b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.eot new file mode 100644 index 000000000..d29fcdc8d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.eot differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.ttf new file mode 100644 index 000000000..af859750b Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff new file mode 100644 index 000000000..2c328bbd8 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff2 b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff2 new file mode 100644 index 000000000..44cd1a9ae Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidKufi-Regular.woff2 differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.eot b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.eot new file mode 100644 index 000000000..be6a9abf7 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.eot differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.ttf new file mode 100644 index 000000000..692b79678 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff new file mode 100644 index 000000000..61c4ce65a Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff2 b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff2 new file mode 100644 index 000000000..a480760f3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Bold.woff2 differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.eot b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.eot new file mode 100644 index 000000000..00213363c Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.eot differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.ttf new file mode 100644 index 000000000..da9a45f15 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff new file mode 100644 index 000000000..7726404df Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff2 b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff2 new file mode 100644 index 000000000..a5fd31b8f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/DroidNaskh-Regular.woff2 differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/fonts/alfont_com_خط-بكرا-عريض.ttf b/odex25_base/sfta_std_backend_theme/static/src/fonts/alfont_com_خط-بكرا-عريض.ttf new file mode 100644 index 000000000..e9981534e Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/fonts/alfont_com_خط-بكرا-عريض.ttf differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/app_drawer.avif b/odex25_base/sfta_std_backend_theme/static/src/img/app_drawer.avif new file mode 100644 index 000000000..23dc11d35 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/app_drawer.avif differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/accounting.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/accounting.png new file mode 100644 index 000000000..5050b4e16 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/accounting.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/appraisal.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/appraisal.png new file mode 100644 index 000000000..02cd99bd2 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/appraisal.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/approvals.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/approvals.png new file mode 100644 index 000000000..229a40da3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/approvals.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/assest-manager.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/assest-manager.png new file mode 100644 index 000000000..6dea6d93d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/assest-manager.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/assets.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/assets.png new file mode 100644 index 000000000..717b289f5 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/assets.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/attendances.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/attendances.png new file mode 100644 index 000000000..30cd8fc45 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/attendances.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/barcode.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/barcode.png new file mode 100644 index 000000000..2dc27379f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/barcode.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/benefit_management.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/benefit_management.png new file mode 100644 index 000000000..a352c38a1 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/benefit_management.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/calendar.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/calendar.png new file mode 100644 index 000000000..fd16d0f65 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/calendar.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/clean-code.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/clean-code.png new file mode 100644 index 000000000..36e26c3fa Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/clean-code.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/consolidation.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/consolidation.png new file mode 100644 index 000000000..5001fc9f3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/consolidation.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/contact.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/contact.png new file mode 100644 index 000000000..c2567974d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/contact.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/crm.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/crm.png new file mode 100644 index 000000000..68ab60ecd Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/crm.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/dashboard.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/dashboard.png new file mode 100644 index 000000000..9385c5ff3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/dashboard.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/discuss.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/discuss.png new file mode 100644 index 000000000..abccb07e7 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/discuss.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/documents.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/documents.png new file mode 100644 index 000000000..a6a36fdb7 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/documents.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/e-learning.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/e-learning.png new file mode 100644 index 000000000..1cdb69346 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/e-learning.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/email_market.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/email_market.png new file mode 100644 index 000000000..055be09e1 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/email_market.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/employees.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/employees.png new file mode 100644 index 000000000..6a1a25aad Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/employees.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/empowerment_management.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/empowerment_management.png new file mode 100644 index 000000000..994482f27 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/empowerment_management.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/events.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/events.png new file mode 100644 index 000000000..acbfa2784 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/events.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/expenses.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/expenses.png new file mode 100644 index 000000000..053a0a8fe Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/expenses.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/field-service.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/field-service.png new file mode 100644 index 000000000..ed3e7f9eb Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/field-service.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/fleet.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/fleet.png new file mode 100644 index 000000000..64676656d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/fleet.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/goal.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/goal.png new file mode 100644 index 000000000..40e8233a6 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/goal.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/help.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/help.png new file mode 100644 index 000000000..bcdd1d1e7 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/help.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/inventory.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/inventory.png new file mode 100644 index 000000000..ca4539a0c Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/inventory.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/invoice.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/invoice.png new file mode 100644 index 000000000..964e639e5 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/invoice.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/iot.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/iot.png new file mode 100644 index 000000000..8f2cc8afc Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/iot.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/kafalat_system.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/kafalat_system.png new file mode 100644 index 000000000..d18f5bcd4 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/kafalat_system.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/kpi.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/kpi.png new file mode 100644 index 000000000..f240c9f93 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/kpi.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/like.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/like.png new file mode 100644 index 000000000..ac9db2610 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/like.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/link_tracker.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/link_tracker.png new file mode 100644 index 000000000..a2f51b756 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/link_tracker.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/lunch.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/lunch.png new file mode 100644 index 000000000..348e1b015 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/lunch.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/maintenance.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/maintenance.png new file mode 100644 index 000000000..fbfe9580f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/maintenance.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/manufacturing.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/manufacturing.png new file mode 100644 index 000000000..3f8d646b3 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/manufacturing.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/marketing_automation.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/marketing_automation.png new file mode 100644 index 000000000..9e550c07f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/marketing_automation.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/members.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/members.png new file mode 100644 index 000000000..05bef1192 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/members.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/membership.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/membership.png new file mode 100644 index 000000000..3bdf7729b Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/membership.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/menu.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/menu.png new file mode 100644 index 000000000..107b74daf Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/menu.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/money.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/money.png new file mode 100644 index 000000000..805298595 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/money.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/my_dashboard.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/my_dashboard.png new file mode 100644 index 000000000..55af7ffa5 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/my_dashboard.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/new-live-chat.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/new-live-chat.png new file mode 100644 index 000000000..6dea6d93d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/new-live-chat.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/notes.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/notes.png new file mode 100644 index 000000000..ab6811181 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/notes.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/notification.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/notification.png new file mode 100644 index 000000000..f7622eee1 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/notification.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/payaroll.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/payaroll.png new file mode 100644 index 000000000..a098a1b90 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/payaroll.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/petty_cash.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/petty_cash.png new file mode 100644 index 000000000..cd17d6629 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/petty_cash.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/planning.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/planning.png new file mode 100644 index 000000000..349a7269d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/planning.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/plm.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/plm.png new file mode 100644 index 000000000..1ef830ebb Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/plm.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/pos.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/pos.png new file mode 100644 index 000000000..56fc6a03a Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/pos.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/project.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/project.png new file mode 100644 index 000000000..536f17081 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/project.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/purchase.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/purchase.png new file mode 100644 index 000000000..838ca3a67 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/purchase.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/quality.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/quality.png new file mode 100644 index 000000000..89b31ee54 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/quality.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate.png new file mode 100644 index 000000000..0ec4b7922 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate_marketing.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate_marketing.png new file mode 100644 index 000000000..83cfe7668 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/real_estate_marketing.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/recruitment.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/recruitment.png new file mode 100644 index 000000000..4ef9f3874 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/recruitment.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/referral.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/referral.png new file mode 100644 index 000000000..3904830d1 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/referral.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/renewal.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/renewal.png new file mode 100644 index 000000000..68de70025 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/renewal.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/rental.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/rental.png new file mode 100644 index 000000000..dbd1d57e4 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/rental.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/repair.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/repair.png new file mode 100644 index 000000000..6755e3d16 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/repair.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/sales.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/sales.png new file mode 100644 index 000000000..422ff4b7c Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/sales.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/setting.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/setting.png new file mode 100644 index 000000000..d3be8609f Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/setting.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/sms.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/sms.png new file mode 100644 index 000000000..896fdce04 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/sms.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/subscription.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/subscription.png new file mode 100644 index 000000000..197c8b350 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/subscription.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/surveys.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/surveys.png new file mode 100644 index 000000000..5602ab97e Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/surveys.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/takaful_settings.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/takaful_settings.png new file mode 100644 index 000000000..4ea087359 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/takaful_settings.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/task-log.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/task-log.png new file mode 100644 index 000000000..9584642c1 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/task-log.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/time-off.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/time-off.png new file mode 100644 index 000000000..51cb50ef5 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/time-off.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/timesheet.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/timesheet.png new file mode 100644 index 000000000..8cf5d3d75 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/timesheet.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/transactions_management.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/transactions_management.png new file mode 100644 index 000000000..199a414d7 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/transactions_management.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/website.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/website.png new file mode 100644 index 000000000..9c4dd1b65 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/website.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/icons/workflow.png b/odex25_base/sfta_std_backend_theme/static/src/img/icons/workflow.png new file mode 100644 index 000000000..624d9ddd8 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/icons/workflow.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/logo.png b/odex25_base/sfta_std_backend_theme/static/src/img/logo.png new file mode 100644 index 000000000..e3b9e6da9 Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/logo.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/pattern.png b/odex25_base/sfta_std_backend_theme/static/src/img/pattern.png new file mode 100644 index 000000000..8fbdb4e4d Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/pattern.png differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/sfta_bg.jpg b/odex25_base/sfta_std_backend_theme/static/src/img/sfta_bg.jpg new file mode 100644 index 000000000..2a729146e Binary files /dev/null and b/odex25_base/sfta_std_backend_theme/static/src/img/sfta_bg.jpg differ diff --git a/odex25_base/sfta_std_backend_theme/static/src/img/smiling_face.svg b/odex25_base/sfta_std_backend_theme/static/src/img/smiling_face.svg new file mode 100644 index 000000000..250900ea0 --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/static/src/img/smiling_face.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/odex25_base/sfta_std_backend_theme/static/src/js/menu.js b/odex25_base/sfta_std_backend_theme/static/src/js/menu.js new file mode 100644 index 000000000..1acd03ef8 --- /dev/null +++ b/odex25_base/sfta_std_backend_theme/static/src/js/menu.js @@ -0,0 +1,140 @@ +odoo.define('sfta_std_backend_theme.menu', function (require) { + "use strict"; + + var concurrency = require('web.concurrency'); + var config = require('web.config'); + var core = require('web.core'); + var dom = require('web.dom'); + var _t = core._t; + + dom.initAutoMoreMenu = function ($el, options) { + /** + * Creates an automatic 'more' dropdown-menu for a set of navbar items. + * + * @param {jQuery} $el + * @param {Object} [options] + * @param {string} [options.unfoldable='none'] + * @param {function} [options.maxWidth] + * @param {string} [options.sizeClass='SM'] + */ + options = _.extend({ + unfoldable: 'none', + maxWidth: false, + sizeClass: 'SM', + }, options || {}); + + var autoMarginLeftRegex = /\bm[lx]?(?:-(?:sm|md|lg|xl))?-auto\b/; + var autoMarginRightRegex = /\bm[rx]?(?:-(?:sm|md|lg|xl))?-auto\b/; + + var $extraItemsToggle = null; + + var debouncedAdapt = _.debounce(_adapt, 250); + core.bus.on('resize', null, debouncedAdapt); + _adapt(); + + $el.data('dom:autoMoreMenu:adapt', _adapt); + $el.data('dom:autoMoreMenu:destroy', function () { + _restore(); + core.bus.off('resize', null, debouncedAdapt); + $el.removeData(['dom:autoMoreMenu:destroy', 'dom:autoMoreMenu:adapt']); + }); + + function _restore() { + if ($extraItemsToggle === null) { + return; + } + var $items = $extraItemsToggle.children('.dropdown-menu').children(); + $items.addClass('nav-item'); + $items.children('.dropdown-item, a').removeClass('dropdown-item').addClass('nav-link'); + $items.insertBefore($extraItemsToggle); + $extraItemsToggle.remove(); + $extraItemsToggle = null; + } + + function _adapt() { + _restore(); + + if (!$el.is(':visible') || $el.closest('.show').length) { + // Never transform the menu when it is not visible yet or if + // it is a toggleable one. + return; + } + if (config.device.size_class <= config.device.SIZES[options.sizeClass]) { + return; + } + + var $allItems = $el.children(); + var $unfoldableItems = $allItems.filter(options.unfoldable); + var $items = $allItems.not($unfoldableItems); + + var maxWidth = 0; + if (options.maxWidth) { + maxWidth = options.maxWidth(); + } else { + maxWidth = computeFloatOuterWidthWithMargins($el[0], true, true, true); + var style = window.getComputedStyle($el[0]); + maxWidth -= (parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth)); + maxWidth -= _.reduce($unfoldableItems, function (sum, el) { + return sum + computeFloatOuterWidthWithMargins(el, true, true, false); + }, 0); + } + + var nbItems = $items.length; + var menuItemsWidth = _.reduce($items, function (sum, el) { + return sum + computeFloatOuterWidthWithMargins(el, false, false, false); + }, 0); + + if (maxWidth - menuItemsWidth >= -0.001) { + return; + } + + maxWidth = maxWidth - 130 + + var $dropdownMenu = $('