@ -0,0 +1,49 @@ |
|||
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg |
|||
:target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html |
|||
:alt: License: LGPL-3 |
|||
|
|||
Dodger Blue Backend Theme |
|||
========================= |
|||
The Dodger Blue Backend Theme in Odoo 18 offers a sleek and modern visual |
|||
experience for users interacting with the platform's backend. |
|||
|
|||
Configuration |
|||
============= |
|||
* No configuration |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
License |
|||
------- |
|||
Lesser General Public License, Version 3 (LGPL v3). |
|||
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) |
|||
|
|||
Credits |
|||
------- |
|||
Developer: Anfas Faisal K, |
|||
|
|||
Contact: odoo@cybrosys.com |
|||
|
|||
Contacts |
|||
-------- |
|||
* Mail Contact : odoo@cybrosys.com |
|||
* Website : https://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 `Our Website <https://cybrosys.com/>`__ |
|||
|
|||
Further information |
|||
=================== |
|||
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,21 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Anfas Faisal K (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,55 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Anfas Faisal K (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": "Dodger Blue Backend Theme", |
|||
"version": "18.0.1.0.0", |
|||
"category": "Themes/Backend", |
|||
"summary": "Outrageous Blue Backend Theme", |
|||
"description": 'With Dodger Blue Backend Theme dominant Dodger Blue color' |
|||
' palette, the theme exudes a sense of professionalism and ' |
|||
'clarity, enhancing the overall user interface', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
"website": "https://www.cybrosys.com", |
|||
"depends":['web'], |
|||
"data": [ |
|||
'views/login_templates.xml', |
|||
], |
|||
'assets': { |
|||
'web.assets_frontend': { |
|||
'dodger_blue/static/src/scss/theme_style.scss', |
|||
}, |
|||
'web.assets_backend': { |
|||
'web/static/lib/jquery/jquery.js', |
|||
'dodger_blue/static/src/js/sidebar_menu.js', |
|||
'dodger_blue/static/src/scss/theme_style_backend.scss', |
|||
'dodger_blue/static/src/xml/sidebar_menu_icon_templates.xml', |
|||
}, |
|||
}, |
|||
'images': ['static/description/banner.jpg', |
|||
'static/description/theme_screenshot.jpg'], |
|||
'license': 'LGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': False, |
|||
} |
@ -0,0 +1,8 @@ |
|||
## Module <dodger_blue> |
|||
|
|||
#### 08.11.2024 |
|||
#### Version 18.0.1.0.0 |
|||
##### ADD |
|||
|
|||
- Initial Commit for Dodger Blue Backend Theme |
|||
|
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 293 KiB |
After Width: | Height: | Size: 147 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 216 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 929 B |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 280 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 198 KiB |
After Width: | Height: | Size: 331 KiB |
After Width: | Height: | Size: 258 KiB |
After Width: | Height: | Size: 368 KiB |
After Width: | Height: | Size: 189 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 476 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 885 B |
After Width: | Height: | Size: 479 KiB |
After Width: | Height: | Size: 106 KiB |
@ -0,0 +1,94 @@ |
|||
/** @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"; |
|||
const { onMounted } = owl; |
|||
import { patch } from "@web/core/utils/patch"; |
|||
import { user } from "@web/core/user"; |
|||
|
|||
|
|||
|
|||
|
|||
patch(NavBar.prototype,{ |
|||
|
|||
//--------------------------------------------------------------------------
|
|||
// Public
|
|||
//--------------------------------------------------------------------------
|
|||
|
|||
/** |
|||
* @override |
|||
*/ |
|||
setup() { |
|||
super.setup() |
|||
this._search_def = $.Deferred(); |
|||
let { apps, menuItems } = computeAppsAndMenuItems(this.menuService.getMenuAsTree("root")); |
|||
this._apps = apps; |
|||
this._searchableMenus = menuItems; |
|||
this.user_id = user.userId; |
|||
this.user_name = user.name |
|||
onMounted(this.onMounted); |
|||
}, |
|||
|
|||
onMounted() { |
|||
this.$search_container = $(".search-container"); |
|||
this.$search_input = $(".search-input input"); |
|||
this.$search_results = $(".search-results"); |
|||
this.$app_menu = $(".app-menu"); |
|||
this.$dropdown_menu = $(".dropdown-menu"); |
|||
this.$cybro_main_menu = $(".cybro-main-menu") |
|||
var navbar = $(".o_main_navbar") |
|||
var self = this; |
|||
}, |
|||
_searchMenusSchedule() { |
|||
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)); |
|||
}, |
|||
_searchMenus() { |
|||
var query = this.$search_input.val(); |
|||
if (query === "") { |
|||
this.$search_container.removeClass("has-results"); |
|||
this.$app_menu.removeClass("o_hidden"); |
|||
this.$search_results.empty(); |
|||
return; |
|||
} |
|||
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, |
|||
}); |
|||
}); |
|||
|
|||
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, |
|||
}); |
|||
}); |
|||
|
|||
this.$search_container.toggleClass( |
|||
"has-results", |
|||
Boolean(results.length) |
|||
); |
|||
var resultsHtml = "" |
|||
this.$search_results.empty(); |
|||
results.forEach(function(result) { |
|||
resultsHtml += `<div class='search_icons'><a class='o-menu-search-result dropdown-item col-12 ml-auto mr-auto' ${result.webIconData ? `style="background-image:url('${result.webIconData}')"` : ''} href='/web#menu_id=${result.id}${result.actionID ? `&action=${result.actionID}` : ''}'>${result.name}</a></div>`; |
|||
}) |
|||
this.$search_results.append(resultsHtml); |
|||
}, |
|||
}); |
@ -0,0 +1,216 @@ |
|||
@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: 15px; |
|||
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: 17px; |
|||
color: #fff |
|||
} |
|||
|
|||
.blockquote-footer { |
|||
color: #fff |
|||
} |
|||
/*==============login================*/ |
|||
.oe_website_login_container { |
|||
padding: 1rem 5rem 5rem; |
|||
background: #f1f4f5; |
|||
} |
|||
#wrapwrap .container .o_database_list{ |
|||
max-width: unset !important; |
|||
} |
|||
|
|||
.oe_login_form{ |
|||
width: max-content; |
|||
} |
|||
|
|||
.oe_login_form, .oe_signup_form, .oe_reset_password_form { |
|||
color: #fff !important; |
|||
} |
|||
.oe_login_form, .oe_signup_form, .oe_reset_password_form { |
|||
max-width: 360px; |
|||
position: relative; |
|||
margin: 50px auto; |
|||
border-radius: 7px; |
|||
padding: 3rem; |
|||
background: #ffffff; |
|||
box-shadow: 0 0 11px 0px #4477d4; |
|||
} |
|||
|
|||
.oe_login_form input { |
|||
height: 40px !important; |
|||
|
|||
border-radius: 0 !important; |
|||
background: #fff !important; |
|||
border: 1px solid #ffffff; |
|||
} |
|||
|
|||
.oe_login_form i.fa.fa-database { |
|||
margin-left: 6px; |
|||
} |
|||
|
|||
.oe_login_form a.btn.btn-secondary { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
border-radius: 0 !important; |
|||
} |
|||
.cybro-login-btn { |
|||
height: 47px; |
|||
border-radius: 0; |
|||
background: #3e8df7 !important; |
|||
border: none; |
|||
color: #ffffff !important; |
|||
font-size: 16px; |
|||
} |
|||
.cybro-super-btn { |
|||
color: #fff; |
|||
font-size: 14px; |
|||
text-decoration: none; |
|||
} |
|||
.cybro-super-btn:hover { |
|||
color: black !important; |
|||
text-decoration: none; |
|||
} |
|||
.cybro-bg footer{ |
|||
background: #303641 !important; |
|||
color: #fff; |
|||
padding-top: 2rem; |
|||
} |
|||
.cybro-bg .navbar { |
|||
background: #303641 !important; |
|||
color: #fff; |
|||
} |
|||
.cybro-bg footer a,.cybro-bg footer p,.cybro-bg header a,.cybro-bg header p { |
|||
color: #fff; |
|||
} |
|||
.cybro-bg .navbar-light .navbar-nav .nav-link { |
|||
color: #ffffff !important; |
|||
} |
|||
.homepage .dropdown-menu.js_usermenu.dropdown-menu-right.show { |
|||
background: #303641; |
|||
} |
|||
.oe_website_login_container .btn-secondary { |
|||
color: #FFFFFF; |
|||
background-color: #afafaf; |
|||
border-color: #afafae; |
|||
} |
|||
input { |
|||
border: 1px solid #e4eaec !important; |
|||
} |
|||
.oe_login_form, .oe_signup_form, .oe_reset_password_form { |
|||
color: #37474f !important; |
|||
font-weight: 300 !important; |
|||
} |
|||
form label { |
|||
font-weight: 300 !important; |
|||
} |
|||
@media (max-width: 400px) { |
|||
.oe_login_form { |
|||
max-width: 300px; |
|||
} |
|||
} |
|||
/*==============//login================*/ |
@ -0,0 +1,153 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<!-- Template for sidebar menu icon--> |
|||
<t t-inherit="web.NavBar.AppsMenu" t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//Dropdown" position="replace"> |
|||
<ul class="o_menu_apps"> |
|||
<li class="dropdown show"> |
|||
<a class="full" data-bs-toggle="collapse" |
|||
data-bs-target="#Appmenu" aria-expanded="true" |
|||
href="#" |
|||
t-attf-style="height: 46px !important;padding: 0 10px !important;color: #fff !important;line-height: 46px !important;transition: .3s all ease !important;"> |
|||
<i class="fa fa-bars"/> |
|||
</a> |
|||
<div class="dropdown-menu cybro-main-menu collapse" |
|||
id="Appmenu" role="menu" x-placement="top-start" |
|||
style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(5px, -1px, 0px);"> |
|||
<div class="sidebar-user"> |
|||
<div class="sidebar-overlay-image"> |
|||
|
|||
</div> |
|||
<t t-set="user_img" |
|||
t-value="'/web/image?model=res.users&field=image_128&id='+user_id"/> |
|||
<img t-att-src="user_img"/> |
|||
<div> |
|||
<span t-esc="user_name"/> |
|||
<br/> |
|||
</div> |
|||
</div> |
|||
<div class="search-container form-row align-items-center m-auto mb-5 col-12"> |
|||
<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="Search menus..." |
|||
class="form-control"/> |
|||
</div> |
|||
</div> |
|||
<div class="search-results col-md-10 ml-auto mr-auto"/> |
|||
</div> |
|||
<div class="nav-container"> |
|||
<div class="app-menu"> |
|||
<t t-foreach="menuService.getApps()" t-as="app" |
|||
t-key="app_index"> |
|||
<a role="menuitem" |
|||
t-attf-href="/odoo/{{app.actionPath}}" |
|||
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: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="{{app.webIconData}}"/> |
|||
<img t-if="app.webIcon.includes('.svg')" |
|||
t-att-title="app.name" |
|||
style="width: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="{{app.webIconData}}"/> |
|||
<span class="a_app_menu_title"> |
|||
<t t-esc="app.name"/> |
|||
</span> |
|||
</a> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</li> |
|||
</ul> |
|||
</xpath> |
|||
</t> |
|||
<t t-name="dodger_blue.SearchResults"> |
|||
<t t-foreach="results" t-as="result"> |
|||
<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/svg+xml;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" |
|||
onclick="$('.dropdown-menu').removeClass('show'); $('.search-results').addClass('o_hidden'); $('.app-menu').removeClass('o_hidden'); $('.search-input input').val('');"/> |
|||
</div> |
|||
</t> |
|||
</t> |
|||
<t t-name="dodger_blue.AppsMenuSidebar"> |
|||
<div class="cybro-sidebar-qweb"> |
|||
<div class="sidebar-menus" role="menu"> |
|||
<t t-foreach="menuService.getApps()" t-as="app" |
|||
t-key="app_index"> |
|||
<li> |
|||
<a role="menuitem" |
|||
t-att-href="app.actionPath ? `/odoo/${app.actionPath}` : `/web#action=${app.actionID}`" |
|||
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: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="data:image/png;base64,{{app.webIconData}}"/> |
|||
<img t-if="app.webIcon.includes('.svg')" |
|||
t-att-title="app.name" |
|||
style="width: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="data:image/svg+xml;base64,{{app.webIconData}}"/> |
|||
</a> |
|||
</li> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
|
|||
<t t-name="dodger_blue.AppIcon"> |
|||
<a t-attf-href="#menu_id=#{app.menuID}&action_id=#{app.actionID}"> |
|||
<img |
|||
class="o-app-icon" |
|||
draggable="false" |
|||
t-attf-src="/web/image?model=ir.ui.menu&field=web_icon_data&id=#{app.menuID}" |
|||
/> |
|||
</a> |
|||
</t> |
|||
<t t-inherit="web.NavBar" t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//nav[hasclass('o_main_navbar')]" position="after"> |
|||
<div class="cybro-sidebar-qweb"> |
|||
<div class="sidebar-menus" role="menu"> |
|||
<t t-foreach="menuService.getApps()" t-as="app" |
|||
t-key="app_index"> |
|||
<li> |
|||
<a role="menuitem" |
|||
t-att-href="app.actionPath ? `/odoo/${app.actionPath}` : `/web#action=${app.actionID}`" |
|||
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: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="{{app.webIconData}}"/> |
|||
<img t-if="app.webIcon.includes('.svg')" |
|||
t-att-title="app.name" |
|||
style="width: 25px !important;height: 25px !important;border-radius: 5px !important;padding:0 !important;" |
|||
t-attf-src="{{app.webIconData}}"/> |
|||
</a> |
|||
</li> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</xpath> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,28 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
<!-- Login template--> |
|||
<template id="login_templated_ext" inherit_id="web.login" |
|||
name="Login Ext"> |
|||
<xpath expr="//button[@type='submit'][1]" position="replace"> |
|||
<button type="submit" |
|||
class="btn btn-primary btn-block cybro-login-btn">Log |
|||
in |
|||
</button> |
|||
</xpath> |
|||
<xpath expr="//t[@t-if='debug']/button" position="replace"> |
|||
<button type="submit" name="redirect" |
|||
value="/web/become" |
|||
class="btn btn-link btn-sm btn-block cybro-super-btn">Log |
|||
in |
|||
as |
|||
superuser |
|||
</button> |
|||
</xpath> |
|||
</template> |
|||
<template inherit_id="web.webclient_bootstrap" |
|||
id="webclient_bootstrap_ext"> |
|||
<xpath expr="//t[@t-set='body_classname']" position="after"> |
|||
<div class="cybro-sidebar"/> |
|||
</xpath> |
|||
</template> |
|||
</odoo> |