init
|
@ -0,0 +1,46 @@
|
|||
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
|
||||
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
|
||||
:alt: License: LGPL-3
|
||||
|
||||
Blueberry Backend Theme
|
||||
=======================
|
||||
Blueberry Backend Theme
|
||||
|
||||
Installation
|
||||
============
|
||||
- www.odoo.com/documentation/16.0/setup/install.html
|
||||
- Install our custom addon
|
||||
|
||||
License
|
||||
-------
|
||||
General Public License, Version 3 (LGPL v3).
|
||||
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html)
|
||||
|
||||
Company
|
||||
-------
|
||||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
|
||||
|
||||
Credits
|
||||
-------
|
||||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
|
||||
Author : Sigha CK @Cybrosys V16
|
||||
|
||||
Contacts
|
||||
--------
|
||||
* Mail Contact : odoo@cybrosys.com
|
||||
|
||||
Bug Tracker
|
||||
-----------
|
||||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
|
||||
|
||||
Maintainer
|
||||
==========
|
||||
.. image:: https://cybrosys.com/images/logo.png
|
||||
:target: https://cybrosys.com
|
||||
This module is maintained by Cybrosys Technologies.
|
||||
|
||||
For support and more information, please visit https://www.cybrosys.com
|
||||
|
||||
Further information
|
||||
===================
|
||||
HTML Description: `<static/description/index.html>`__
|
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||
# Author: Sigha CK (odoo@cybrosys.com)
|
||||
#
|
||||
# You can modify it under the terms of the GNU LESSER
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
# (LGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
|
@ -0,0 +1,56 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||
# Author: Sigha CK (odoo@cybrosys.com)
|
||||
#
|
||||
# You can modify it under the terms of the GNU LESSER
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
# (LGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
{
|
||||
"name": "Blueberry Backend Theme",
|
||||
"version": "16.0.1.0.0",
|
||||
"category": "Themes/Backend",
|
||||
"summary": """Backend theme for Odoo 16.0 community edition""",
|
||||
"description": "Blueberry Backend Theme Is A Ultimate Theme for Odoo 16."
|
||||
"This Theme Will Give You A New Experience With Odoo",
|
||||
'author': 'Cybrosys Techno Solutions',
|
||||
'company': 'Cybrosys Techno Solutions',
|
||||
'maintainer': 'Cybrosys Techno Solutions',
|
||||
"website": "https://www.cybrosys.com",
|
||||
'images': [
|
||||
'static/description/banner.png',
|
||||
'static/description/theme_screenshot.png'
|
||||
],
|
||||
"depends": [
|
||||
'web',
|
||||
'portal'
|
||||
],
|
||||
"assets": {
|
||||
'web.assets_backend': [
|
||||
'/backend_theme/static/src/scss/theme_style_backend.scss',
|
||||
'/backend_theme/static/src/js/search_apps.js',
|
||||
'/backend_theme/static/src/js/sidebar_menu.js',
|
||||
'/backend_theme/static/src/xml/sidebar_menu_templates.xml'
|
||||
],
|
||||
'web.assets_frontend': [
|
||||
'backend_theme/static/src/scss/theme_style.scss'
|
||||
],
|
||||
},
|
||||
'license': 'LGPL-3',
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'application': False,
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
## Module <backend_theme>
|
||||
|
||||
#### 24.07.2023
|
||||
#### Version 16.0.1.0.0
|
||||
##### ADD
|
||||
- Initial Commit for Blueberry Backend Theme
|
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 388 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 179 KiB |
After Width: | Height: | Size: 294 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 766 B |
After Width: | Height: | Size: 740 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 456 KiB |
|
@ -0,0 +1,464 @@
|
|||
<!-- HERO SECTION -->
|
||||
<div class="contianer">
|
||||
<div class="row position-relative"
|
||||
style="background-color: #3c31e2 !important; height: 400px; margin-bottom: 6rem;">
|
||||
<div class="col-lg-12 d-flex flex-column justify-content-start align-items-center">
|
||||
<h1 class="display-1 text-white" style="padding-top: 5rem;">
|
||||
Blueberry Backend Theme</h1>
|
||||
<p class="text-light small font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase;">Clean
|
||||
& Colorful Backend Theme for
|
||||
Odoo 16</p>
|
||||
</div>
|
||||
<img src="./images/hero.png" class="img img-fluid"
|
||||
style="height: auto; width: 525px; top: 45%; left: 0; right: 0; margin-left: auto; margin-right: auto;"
|
||||
height="auto" width="525px">
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF HERO SECTION -->
|
||||
<!-- SHORT DESCRIPTION -->
|
||||
<div class="container">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-12 d-flex justify-content-center align-items-center">
|
||||
<h6 class="text-muted text-center w-50" style="line-height: 22px;">
|
||||
The app enables a user friendly backend
|
||||
theme for Odoo 16.0 community edition.</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF SHORT DESCRIPTION -->
|
||||
<!-- FEATURE ICONS -->
|
||||
<div class="container w-50" style="margin: 3rem auto;">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
|
||||
<div
|
||||
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
|
||||
class="d-flex justify-content-center align-items-center">
|
||||
<img height="60px" src="./images/icons/design.png">
|
||||
</div>
|
||||
<h6 class="my-4 text-center">Carefully Crafted</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
|
||||
<div
|
||||
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
|
||||
class="d-flex justify-content-center align-items-center">
|
||||
<img height="60px" src="./images/icons/responsive.png">
|
||||
</div>
|
||||
<h6 class="my-4 text-center">Responsive Design</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
|
||||
<div
|
||||
style="height: 100px; width: 100px; border: 8px solid #e4e3fe; border-radius: 50%; background-color: #d9d7fe; box-shadow: 0px 0px 0px 8px #f0efff;"
|
||||
class="d-flex justify-content-center align-items-center">
|
||||
<img height="60px" src="./images/icons/quality.png">
|
||||
</div>
|
||||
<h6 class="my-4 text-center">Quality Checked</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF FEATURE ICONS -->
|
||||
<!-- ONE COLUMN SECTION-->
|
||||
<div class="container" style="margin: 3rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
|
||||
<h2 class="text-center mt-3 display-4 text-weight-bold">Kanban
|
||||
View</h2>
|
||||
<p class="text-center lead text-muted mb-4">Kanban view with a clean
|
||||
layout and modified font.</p>
|
||||
<img height="600px" width="auto" src="./images/kanban_blue.png"
|
||||
class="img img-fluid deep-4 rounded">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container" style="margin: 6rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
|
||||
<img src="./images/discuss_blue.png"
|
||||
class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
<div class="col-lg-7 d-flex flex-column justify-content-center">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Colored UI Elements</span>
|
||||
<h2 class="mt-3">Discuss</h2>
|
||||
<p class="lead text-muted mb-4">Discuss page with a different
|
||||
style.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- RESPONSIVE SECTION-->
|
||||
<div class="container" style="margin: 6rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
|
||||
<img src="./images/responsive.jpg"
|
||||
class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
<div class="col-lg-7 d-flex flex-column justify-content-center">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Responsive
|
||||
Layout</span>
|
||||
<h2 class="mt-3">Truly Responsive</h2>
|
||||
<p class="lead text-muted mb-4">Fully responsive layout which
|
||||
enables to view and manage everything from the comfort of your
|
||||
mobile device.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF RESPONSIVE SECTION-->
|
||||
<!-- TWO COLUMN SECTION-->
|
||||
<div class="container" style="margin: 6rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Custom
|
||||
App Drawer</span>
|
||||
<h2 class="mt-3">Modified App Drawer</h2>
|
||||
<p class="lead text-muted mb-4">Modified app drawer which helps to
|
||||
navigate through different applications.</p>
|
||||
<img src="./images/sidebar.png"
|
||||
class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Custom
|
||||
Search Option</span>
|
||||
<h2 class="mt-3">Advanced searching option for App menus.</h2>
|
||||
<p class="lead text-muted mb-4">Advanced searching option which
|
||||
provides an easy way to navigate through the different app
|
||||
menus.</p>
|
||||
<img src="./images/adv_search1.png"
|
||||
class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF TWO COLUMN SECTION-->
|
||||
<!-- RESPONSIVE SECTION-->
|
||||
<div class="container" style="margin: 6rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
|
||||
<img src="./images/datepicker.png"
|
||||
class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
<div class="col-lg-7 d-flex flex-column justify-content-center">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Colored UI Elements</span>
|
||||
<h2 class="mt-3">Custom Date Picker</h2>
|
||||
<p class="lead text-muted mb-4">Customized date picker</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF RESPONSIVE SECTION-->
|
||||
<!-- TWO COLUMN SECTION-->
|
||||
<div class="container" style="margin: 6rem auto;">
|
||||
<div class="row my-4">
|
||||
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Colored UI Elements</span>
|
||||
<h2 class="mt-3">Tree View</h2>
|
||||
<p class="lead text-muted mb-4">Tree view with a clean layout and
|
||||
modified font.</p>
|
||||
<img src="./images/tree.png" class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
|
||||
<span class="font-weight-bold"
|
||||
style="letter-spacing: 2px; text-transform: uppercase; color: #4336FB">Colored UI Elements</span>
|
||||
<h2 class="mt-3">Form View</h2>
|
||||
<p class="lead text-muted mb-4">Form view with a clean layout and
|
||||
modified font.</p>
|
||||
<img src="./images/form.png" class="img img-fluid deep-2 rounded">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF TWO COLUMN SECTION-->
|
||||
<!-- OUR SERVICES -->
|
||||
<section class="container" style="margin-top: 6rem !important;">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
|
||||
<h2 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
|
||||
Our Services</h2>
|
||||
<p class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
|
||||
We provide following services</p>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/cogs.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Customization</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/wrench.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Implementation</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/lifebuoy.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Support</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/user.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Hire
|
||||
Odoo
|
||||
Developer</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/puzzle.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Integration</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/update.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Migration</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/consultation.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Consultancy</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/training.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Implementation</h6>
|
||||
</div>
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/license.png" class="img-responsive"
|
||||
height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Licensing Consultancy</h6>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- END OF END OF OUR SERVICES -->
|
||||
<!-- OUR INDUSTRIES -->
|
||||
<section class="container" style="margin-top: 6rem !important;">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
|
||||
<h2 class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
|
||||
Our Industries</h2>
|
||||
<p class="text-center"
|
||||
style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
|
||||
Our industry specifics and process segments to solve your
|
||||
complex business barriers.</p>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/trading-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Trading
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Easily procure
|
||||
and
|
||||
sell your products</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/pos-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
POS
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Easy
|
||||
configuration
|
||||
and convivial experience</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/education-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Education
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">A platform for
|
||||
educational management</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/manufacturing-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Manufacturing
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Plan, track and
|
||||
schedule your operations</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/ecom-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
E-commerce & Website
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Mobile
|
||||
friendly,
|
||||
awe-inspiring product pages</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/service-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Service Management
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Keep track of
|
||||
services and invoice</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/restaurant-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Restaurant
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">Run your bar or
|
||||
restaurant methodically</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="./assets/icons/hotel-black.png"
|
||||
class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="color: #000 !important; font-weight: bold;">
|
||||
Hotel Management
|
||||
</h5>
|
||||
<p style="font-size: 0.9rem !important;">An
|
||||
all-inclusive
|
||||
hotel management application</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- END OF END OF OUR INDUSTRIES -->
|
||||
<!-- FOOTER -->
|
||||
<!-- Footer Section -->
|
||||
<section class="container" style="margin: 5rem auto 2rem;">
|
||||
<div class="row" style="max-width:1540px;">
|
||||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
|
||||
<h2 class="text-center"
|
||||
style="color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
|
||||
Need Help?</h2>
|
||||
<p class="text-center"
|
||||
style="color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
|
||||
Do you have any queries regarding our products & services?
|
||||
Let us know.</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Contact Cards -->
|
||||
<div class="row d-flex justify-content-center align-items-center"
|
||||
style="max-width:1540px; margin: 0 auto 2rem auto;">
|
||||
<div class="col-lg-12"
|
||||
style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
|
||||
<div class="row mt-4">
|
||||
<div class="col-lg-4">
|
||||
<a href="mailto:odoo@cybrosys.com" target="_blank"
|
||||
class="btn btn-block mb-2 deep_hover"
|
||||
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
|
||||
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<a href="https://api.whatsapp.com/send?phone=918606827707"
|
||||
target="_blank"
|
||||
class="btn btn-block mb-2 deep_hover"
|
||||
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
|
||||
class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<a href="skype:cybrosystechnologies?chat" target="_blank"
|
||||
class="btn btn-block deep_hover"
|
||||
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
|
||||
class="fa fa-envelope mr-2"></i>cybrosystechnologies</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End of Contact Cards -->
|
||||
</section>
|
||||
<!-- Footer -->
|
||||
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
|
||||
<div class="row"
|
||||
style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
|
||||
<!-- Logo -->
|
||||
<div class="col-lg-12 d-flex justify-content-center align-items-center"
|
||||
style="margin-top: 3rem;">
|
||||
<img src="https://www.cybrosys.com/images/logo.png" width="200px"
|
||||
height="auto"/>
|
||||
</div>
|
||||
<!-- End of Logo -->
|
||||
<div class="col-lg-12">
|
||||
<hr
|
||||
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
|
||||
<!-- End of Footer Section -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF FOOTER -->
|
||||
</section>
|
After Width: | Height: | Size: 825 KiB |
|
@ -0,0 +1,114 @@
|
|||
/** @odoo-module */
|
||||
import {NavBar} from "@web/webclient/navbar/navbar";
|
||||
import {registry} from "@web/core/registry";
|
||||
const {fuzzyLookup} = require('@web/core/utils/search');
|
||||
import {computeAppsAndMenuItems} from "@web/webclient/menus/menu_helpers";
|
||||
import core from 'web.core';
|
||||
const {onMounted,useRef} = owl;
|
||||
import {patch} from 'web.utils';
|
||||
// patch NavaBar for searching apps and contents by extending navbar
|
||||
patch(NavBar.prototype, 'backend_theme/static/src/js/search_apps.js', {
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
setup() {
|
||||
this._super();
|
||||
this.side_root = useRef("side_root");
|
||||
this._search_def = $.Deferred();
|
||||
let {
|
||||
apps,
|
||||
menuItems
|
||||
} = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root"));
|
||||
this._apps = apps;
|
||||
this._searchableMenus = menuItems;
|
||||
onMounted(this.onMounted);
|
||||
},
|
||||
onMounted() {
|
||||
this.$search_container = $(this.root.el.children.sidebar_panel.querySelector(".search-container"));
|
||||
this.$search_input = $(this.root.el.children.sidebar_panel.querySelector(".search-input input"));
|
||||
this.$search_results = $(this.root.el.children.sidebar_panel.querySelector(".search-results"));
|
||||
this.$app_menu = $(this.root.el.children.sidebar_panel.querySelector(".app-menu"));
|
||||
},
|
||||
/**
|
||||
* Shows the search results and triggers a search.
|
||||
*/
|
||||
_searchMenusSchedule: function() {
|
||||
this.$search_results.removeClass("o_hidden")
|
||||
this.$app_menu.addClass("o_hidden");
|
||||
this._search_def.reject();
|
||||
this._search_def = $.Deferred();
|
||||
setTimeout(this._search_def.resolve.bind(this._search_def), 50);
|
||||
this._search_def.done(this._searchMenus.bind(this));
|
||||
},
|
||||
/**
|
||||
* Performs a fuzzy search on the available apps and menu items.
|
||||
*/
|
||||
_searchMenus: function() {
|
||||
var query = this.$search_input.val();
|
||||
var self = this
|
||||
if (query === "") {
|
||||
this.$search_container.removeClass("has-results");
|
||||
this.$app_menu.removeClass("o_hidden");
|
||||
this.$search_results.empty();
|
||||
return;
|
||||
}
|
||||
// Search for all apps.
|
||||
var results = [];
|
||||
fuzzyLookup(query, this._apps, (menu) => menu.label)
|
||||
.forEach((menu) => {
|
||||
results.push({
|
||||
category: "apps",
|
||||
name: menu.label,
|
||||
actionID: menu.actionID,
|
||||
id: menu.id,
|
||||
webIconData: menu.webIconData,
|
||||
});
|
||||
});
|
||||
// Search for all menu items.
|
||||
fuzzyLookup(query, this._searchableMenus, (menu) =>
|
||||
(menu.parents + " / " + menu.label).split("/").reverse().join("/")
|
||||
).forEach((menu) => {
|
||||
results.push({
|
||||
category: "menu_items",
|
||||
name: menu.parents + " / " + menu.label,
|
||||
actionID: menu.actionID,
|
||||
id: menu.id,
|
||||
});
|
||||
});
|
||||
// Render the search results.
|
||||
this.$search_container.toggleClass("has-results", Boolean(results.length));
|
||||
var render = this.$search_results.html(
|
||||
core.qweb.render(
|
||||
"backend_theme.SearchResults", {
|
||||
results: results,
|
||||
widget: this,
|
||||
})
|
||||
);
|
||||
// close side bar panel on click
|
||||
let elements = render[0].querySelectorAll('.search_icons')
|
||||
for (var i = 0; i < elements.length; i++) {
|
||||
elements[i].addEventListener('click', function(){
|
||||
var ev = self.__owl__.bdom.el.querySelectorAll('#openSidebar .fa')[0]
|
||||
var $el = $(self.__owl__.bdom.el.querySelectorAll('#sidebar_panel'))
|
||||
var action = $(self.__owl__.bdom.parentEl.querySelectorAll('.o_action_manager'))
|
||||
$el.find('.form-control')[0].value = ""
|
||||
self._searchMenus()
|
||||
if (!$(ev).hasClass('opened')){
|
||||
$el.show()
|
||||
$(ev).toggleClass('opened')
|
||||
$el.css({'display':'block'});
|
||||
action.css({'margin-left': '320px','transition':'all .1s linear'});
|
||||
}
|
||||
else{
|
||||
$el.hide()
|
||||
$(ev).toggleClass('opened')
|
||||
$el.css({'display':'none'});
|
||||
action.css({'margin-left': '0px'});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
|
@ -0,0 +1,30 @@
|
|||
/** @odoo-module **/
|
||||
import { NavBar } from "@web/webclient/navbar/navbar";
|
||||
import { patch } from "@web/core/utils/patch";
|
||||
// patch navbar for adding new sidebar functionality
|
||||
patch(NavBar.prototype, 'backend_theme', {
|
||||
setup(){
|
||||
return this._super(...arguments);
|
||||
},
|
||||
//toggle sidebar on click
|
||||
openSidebar(ev){
|
||||
var $el = $(ev.target).parents().find('header #sidebar_panel')
|
||||
var action = $(ev.target).parents().find('body .o_action_manager')
|
||||
if (!$(ev.target).hasClass('opened')){
|
||||
$el.show()
|
||||
$(ev.target).toggleClass('opened')
|
||||
$el.css({'display':'block'});
|
||||
action.css({'margin-left': '320px','transition':'all .1s linear'});
|
||||
}
|
||||
else{
|
||||
$el.hide()
|
||||
$(ev.target).toggleClass('opened')
|
||||
$el.css({'display':'none'});
|
||||
action.css({'margin-left': '0px'});
|
||||
}
|
||||
},
|
||||
clickSidebar(ev){
|
||||
var $el = $(ev.target).parents().find('header #sidebar_panel').css({'display':'none'});
|
||||
var action = $(ev.target).parents().find('body .o_action_manager').css({'margin-left': '0px'});
|
||||
},
|
||||
});
|
|
@ -0,0 +1,117 @@
|
|||
@import url('https://fonts.googleapis.com/css?family=Poppins');
|
||||
body {
|
||||
font-size: 14px;
|
||||
font-family: lato, sans-serif
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
font-family: poppins, sans-serif
|
||||
}
|
||||
|
||||
p {
|
||||
font-family: lato, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 26px;
|
||||
color: #444;
|
||||
margin-bottom: 0
|
||||
}
|
||||
|
||||
p img {
|
||||
margin: 0
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
text-decoration: none;
|
||||
transition: all .3s ease-in-out;
|
||||
-webkit-transition: all .3s ease-in-out;
|
||||
-moz-transition: all .3s ease-in-out;
|
||||
-o-transition: all .3s ease-in-out;
|
||||
outline: 0;
|
||||
font-family: poppins, sans-serif
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
outline: 0
|
||||
}
|
||||
|
||||
p a, p a:visited {
|
||||
line-height: inherit;
|
||||
outline: 0
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin-bottom: 0;
|
||||
margin-top: 0;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
list-style-type: none
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style: decimal
|
||||
}
|
||||
|
||||
ol, ul.square, ul.circle, ul.disc {
|
||||
margin-left: 0
|
||||
}
|
||||
|
||||
ul.square {
|
||||
list-style: square outside
|
||||
}
|
||||
|
||||
ul.circle {
|
||||
list-style: circle outside
|
||||
}
|
||||
|
||||
ul.disc {
|
||||
list-style: disc outside
|
||||
}
|
||||
|
||||
ul ul, ul ol, ol ol, ol ul {
|
||||
margin: 0
|
||||
}
|
||||
|
||||
ul ul li, ul ol li, ol ol li, ol ul li {
|
||||
margin-bottom: 0
|
||||
}
|
||||
|
||||
button {
|
||||
cursor: pointer;
|
||||
outline: none !important;
|
||||
letter-spacing: 0
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding: 60px;
|
||||
position: relative;
|
||||
background: #853bfa
|
||||
}
|
||||
|
||||
blockquote:before {
|
||||
content: '\f10d';
|
||||
font-family: fontawesome;
|
||||
color: #fff;
|
||||
font-size: 32px;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 46px
|
||||
}
|
||||
|
||||
blockquote p {
|
||||
font-size: 16px;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.blockquote-footer {
|
||||
color: #fff
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//nav[hasclass('o_main_navbar')]" position="after">
|
||||
<!-- Advanced Sidebar for app search -->
|
||||
<div class="sidebar_panel" id="sidebar_panel" t-ref="side_root">
|
||||
<div class="sidebar">
|
||||
<div class="search-container form-row align-items-center m-auto mb-5 col-12"
|
||||
style="padding-top: 32px;">
|
||||
<div class="search-input col-md-10 ml-auto mr-auto mb-5"
|
||||
t-on-input="_searchMenusSchedule">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">
|
||||
<i class="fa fa-search"/>
|
||||
</div>
|
||||
</div>
|
||||
<input type="search"
|
||||
autocomplete="off"
|
||||
placeholder="搜索菜单..."
|
||||
class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-results col-md-10 ml-auto mr-auto"/></div>
|
||||
<ul class="sidebar_menu">
|
||||
<t t-foreach="menuService.getApps()" t-as="app"
|
||||
t-key="app_index">
|
||||
<li>
|
||||
<a role="menuitem" t-on-click="clickSidebar"
|
||||
t-attf-href="#menu_id={{app.id}}"
|
||||
class="dropdown-item o_app mt0"
|
||||
t-att-data-menu-id="app.menuID"
|
||||
t-att-data-menu-xmlid="app.xmlID"
|
||||
t-att-data-action-id="app.actionID">
|
||||
<img t-if="app.webIcon.includes('.png')"
|
||||
t-att-title="app.name"
|
||||
style="width: 40px !important;height: 40px !important;
|
||||
border-radius: 10px !important;margin: 5px 5px 5px 5px;"
|
||||
t-attf-src="data:image/png;base64,{{app.webIconData}}"/>
|
||||
<img t-if="app.webIcon.includes('.svg')"
|
||||
t-att-title="app.name"
|
||||
style="width: 40px !important;height: 40px !important;
|
||||
border-radius: 10px !important;margin: 5px 5px 5px 5px;"
|
||||
t-attf-src="data:image/svg+xml;base64,{{app.webIconData}}"/>
|
||||
<b class="a_app_menu_title">
|
||||
<t t-esc="app.name"/>
|
||||
</b>
|
||||
</a>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
<t t-inherit="web.NavBar.AppsMenu" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//Dropdown" position="replace">
|
||||
<li class="dropdown">
|
||||
<a id="openSidebar" t-on-click="openSidebar"
|
||||
style="display: block; cursor: pointer; margin-left: 10px;">
|
||||
<i class="fa fa-bars fa-lg"/>
|
||||
</a>
|
||||
<a id="closeSidebar"
|
||||
style="display: none; cursor: pointer; margin-left: 10px;">
|
||||
<i class="fa fa-bars fa-lg"/>
|
||||
</a>
|
||||
</li>
|
||||
</xpath>
|
||||
</t>
|
||||
<t t-inherit="web.UserMenu" t-inherit-mode="extension" owl="1">
|
||||
<xpath expr="//span[hasclass('oe_topbar_name')]" position="replace">
|
||||
<div class="oe_topbar_name"/>
|
||||
</xpath>
|
||||
</t>
|
||||
<!-- view for search result -->
|
||||
<t t-name="backend_theme.SearchResults">
|
||||
<t t-foreach="results" t-as="result">
|
||||
<t t-log="this"/>
|
||||
<div class="search_icons">
|
||||
<a t-attf-class="o-menu-search-result dropdown-item
|
||||
col-12 ml-auto mr-auto #{result_first ? 'active' : ''}"
|
||||
t-attf-style="background-image:url('data:image/png;base64,#{result.webIconData}')"
|
||||
t-attf-href="#menu_id=#{result.id}&action_id=#{result.actionID}"
|
||||
t-att-data-menu-id="result.id"
|
||||
t-att-data-action-id="result.actionID"
|
||||
t-raw="result.name"
|
||||
/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
|
@ -0,0 +1,40 @@
|
|||
Code Backend Theme
|
||||
==================
|
||||
* Code Backend Theme module for Odoo 16 community editions
|
||||
|
||||
Installation
|
||||
============
|
||||
- www.odoo.com/documentation/16.0/setup/install.html
|
||||
- Install our custom addon
|
||||
|
||||
License
|
||||
-------
|
||||
General Public License, Version 3 (LGPL v3).
|
||||
(https://www.odoo.com/documentation/user/14.0/legal/licenses/licenses.html)
|
||||
|
||||
Company
|
||||
-------
|
||||
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
|
||||
|
||||
Credits
|
||||
-------
|
||||
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
|
||||
|
||||
Contacts
|
||||
--------
|
||||
* Mail Contact : odoo@cybrosys.com
|
||||
|
||||
Bug Tracker
|
||||
-----------
|
||||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
|
||||
|
||||
Maintainer
|
||||
==========
|
||||
This module is maintained by Cybrosys Technologies.
|
||||
|
||||
For support and more information, please visit https://www.cybrosys.com
|
||||
|
||||
Further information
|
||||
===================
|
||||
HTML Description: `<static/description/index.html>`__
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU LESSER
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
# (LGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from .hooks import test_pre_init_hook, test_post_init_hook
|
|
@ -0,0 +1,64 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU LESSER
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
# (LGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
{
|
||||
"name": "Code Backend Theme V16",
|
||||
"description": """Minimalist and elegant backend theme for Odoo 16, Backend Theme, Theme""",
|
||||
"summary": "Code Backend Theme V16 is an attractive theme for backend",
|
||||
"category": "Themes/Backend",
|
||||
"version": "16.0.1.0.2",
|
||||
'author': 'Cybrosys Techno Solutions',
|
||||
'company': 'Cybrosys Techno Solutions',
|
||||
'maintainer': 'Cybrosys Techno Solutions',
|
||||
'website': "https://www.cybrosys.com",
|
||||
"depends": ['base', 'web', 'mail'],
|
||||
"data": [
|
||||
'views/layout.xml',
|
||||
'views/icons.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'code_backend_theme/static/src/xml/styles.xml',
|
||||
'code_backend_theme/static/src/xml/top_bar.xml',
|
||||
'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/chrome/sidebar_menu.js',
|
||||
'code_backend_theme/static/src/js/fields/colors.js',
|
||||
],
|
||||
'web.assets_frontend': [
|
||||
'code_backend_theme/static/src/scss/login.scss',
|
||||
],
|
||||
},
|
||||
'images': [
|
||||
'static/description/banner.png',
|
||||
'static/description/theme_screenshot.png',
|
||||
],
|
||||
'license': 'LGPL-3',
|
||||
'pre_init_hook': 'test_pre_init_hook',
|
||||
'post_init_hook': 'test_post_init_hook',
|
||||
'installable': True,
|
||||
'application': False,
|
||||
'auto_install': False,
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
## Module <code_backend_theme>
|
||||
|
||||
#### 17.10.2022
|
||||
#### Version 16.0.1.0.0
|
||||
#### ADD
|
||||
Initial Commit
|
|
@ -0,0 +1,292 @@
|
|||
"""Hooks for Changing Menu Web_icon"""
|
||||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2021-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
||||
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU LESSER
|
||||
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
# (LGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
import base64
|
||||
|
||||
from odoo import api, SUPERUSER_ID
|
||||
from odoo.modules import get_module_resource
|
||||
|
||||
|
||||
def test_pre_init_hook(cr):
|
||||
"""pre 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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Contacts.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Link Tracker':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Dashboards.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Sales':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Sales.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Invoicing':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Invoicing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Inventory':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'CRM.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Note' or menu.name == 'Notes':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Note.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Website':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Point of Sale.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Manufacturing':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Repairs.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Email Marketing':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Email Marketing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'SMS Marketing':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'SMS Marketing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Project':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Live Chat.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Lunch':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Timesheets.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Events':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'eLearning.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Members':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Members.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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Contacts.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Link Tracker':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Dashboards.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Sales':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Sales.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Invoicing' or menu.name == 'Accounting':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Invoicing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Inventory':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Note.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Website':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Point of Sale.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Manufacturing':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Repairs.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Email Marketing':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Email Marketing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'SMS Marketing':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'SMS Marketing.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Project':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Live Chat.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Lunch':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Timesheets.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Events':
|
||||
img_path = get_module_resource(
|
||||
'code_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(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'eLearning.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
||||
if menu.name == 'Members':
|
||||
img_path = get_module_resource(
|
||||
'code_backend_theme', 'static', 'src', 'img', 'icons', 'Members.png')
|
||||
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
|
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 168 KiB |
After Width: | Height: | Size: 306 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 169 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 722 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 98 KiB |