This commit is contained in:
jinling.yang
2023-01-31 11:09:13 +08:00
98 changed files with 1079 additions and 542 deletions

View File

@@ -1,15 +0,0 @@
Most of the files are
Copyright (c) 2012-TODAY Kanak Infosystems LLP.
Many files also contain contributions from third
parties. In this case the original copyright of
the contributions can be traced through the
history of the source version control system.
When that is not the case, the files contain a prominent
notice stating the original copyright and applicable
license, or come with their own dedicated COPYRIGHT
and/or LICENSE file.

View File

@@ -1,11 +0,0 @@
Kanak Infosystems LLP. Proprietary License v1.0
This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Kanak Infosystems LLP Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).
You may develop Kanak Infosystems LLP modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Kanak Infosystems LLP Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.
The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,6 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import controller
from . import models

View File

@@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
{
'name': "Background image in Login page",
'version': '16.0.1.0',
'summary': """Module helps to set background image in Login page.| Background image | image|Login | Login page|website|""",
'description': """Module helps to set background image in Login page.""",
'license': 'OPL-1',
'website': "https://www.kanakinfosystems.com",
'author': 'Kanak Infosystems LLP.',
'category': 'Tools',
'depends': ['base', 'portal'],
'data': [
'views/res_company.xml',
],
'assets': {
'web.assets_frontend': [
'login_bg_img_knk/static/src/css/bg_image.scss',
],
},
'images': ['static/description/banner.gif'],
'sequence': 1,
"application": True,
"installable": True
}

View File

@@ -1,5 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import main

View File

@@ -1,24 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
import base64
from odoo.http import Controller, request, route
from werkzeug.utils import redirect
DEFAULT_IMAGE = 'login_bg_img_knk/static/src/img/bg.jpg'
class DasboardBackground(Controller):
@route(['/dashboard'], type='http', auth="public")
def dashboard(self, **post):
user = request.env.user
company = user.company_id
if company.bg_image:
image = base64.b64decode(company.bg_image)
else:
return redirect(DEFAULT_IMAGE)
return request.make_response(
image, [('Content-Type', 'image')])

View File

@@ -1,5 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import res_company

View File

@@ -1,12 +0,0 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from odoo import models, fields
class ResCompany(models.Model):
_inherit = 'res.company'
bg_image = fields.Binary(string="Image")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 799 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -1,409 +0,0 @@
<div class="container">
<section style="background-color: white;margin-bottom: 50px;margin-top: 10px;">
<div class="row mb-sm-4 justify-content-md-between justify-content-center">
<div class="text-center ml-5 pt-3">
<a href="https://kanakinfosystems.com" target="_blank">
<img src="logo.png" style="height:55px; width:auto" alt="kanakinfosystems-logo">
</a>
</div>
<div class="text-center" style="color:#113246;margin-left:40px;text-align-last: center;">
<span class="mb-0 mt-2" style="font-size: 16px;margin-right: 68px;color: #09436d;">Supported Editions</span>
<div class="d-flex align-items-center" style="margin-left: -80px;margin-top: 10px;">
<div class="mb-0 mt-2 text-left"><span style="color:#ffffff;background-color:#7c7bad;border-radius: 5px;padding: 0.5em 0.4em;padding-right: 1.6em;padding-left:1.6em;"> Community </span></div>
<div class="mb-0 mt-2 ml-2 text-right"><span style="color:#ffffff;background-color:#007a77;border-radius: 5px;padding: 0.5em 0.4em;padding-right:1.6em;padding-left:1.6em;"> Enterprise </span></div>
<div class="mb-0 mt-2 ml-2 text-right"><span style="color:#ffffff;background-color: #6195c2;border-radius: 5px;padding: 0.5em 0.4em;padding-right:1.6em;padding-left: 1.6em;"> Odoo.sh </span></div>
</div>
</div>
<div class="text-center mt-md-0 mr-5 pt-3">
<span>
<img src="odoo-logo.png" style="height:55px; width:120" alt="odoo-logo">
</span>
</div>
</div>
</section>
<hr>
<section style="background-color: white;margin-bottom: 35px;margin-top: 50px;">
<div style="border: 1px solid;margin-right: 40px;margin-left: 40px;border-color: #dee2e6;">
<div class="row justify-content-center">
<div class="text-center">
<h3 style="font-size: 30px;padding-top: 30px;color: #23466d;font-weight: 400;">
Background image in Login page
</h3>
</div>
</div>
<div class="oe_row">
<div class="text-center" style="border:1px solid;border-color: #e9f5f9;background-color: #d6ecf385;">
<p style="font-size:21px;color:#113246;" class="px-sm-4 p-2 pt-4"><b>Background image in Login page</b> module helps to set background image in Login page.
</p>
</div>
</div>
<div class="oe_row">
<h3 style="color:#0464d5; font-size:30px; padding-bottom:20px; text-align:center; margin-top:3%">Key Features of Background image in Login page</h3>
<ul class="list-unstyled" style="margin-bottom:20px">
<li style="padding-bottom:5px; color:#091e42; font-size:20px; padding-left:30px"><i class="fa fa-hand-o-right" style="color:#28a745; font-size:25px; padding-right:5px"></i>set background image in Login page.
</li>
<li style="padding-bottom:5px; color:#091e42; font-size:20px; padding-left:30px"><i class="fa fa-hand-o-right" style="color:#28a745; font-size:25px; padding-right:5px"></i>Support Multi Company.
</li>
</ul>
</div>
</div>
</section>
<section class="oe_container">
<div style="padding: 15px 0px;" id="loempia_tabs">
<div style="border:1px solid; height:70px; margin-left:140px; margin-right:148px; border-color:#dee2e6">
<ul style="border:none; background-color:unset; margin:14px auto" data-tabs="tabs" class="nav nav-tabs justify-content-center" role="tablist">
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-tabContent" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Configuration &amp; Setup.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">SCREENS</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-release" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Release Notes.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">RELEASE NOTES</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-faq" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/FAQ'S.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">FAQ'S</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; border:1px solid #ddd">
<a href="#pills-support" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Support.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">SUPPORT</a>
</li>
</ul>
</div>
<div class="tab-content" id="myTabContent">
<div class="px-3 pt-1 mt8 tab-pane show active fade" id="pills-tabContent" role="tabpanel" aria-labelledby="pills-release-tab" style="border: 1px solid;margin-left: 75px;margin-right: 75px;margin-top: -33px;border-color: #dee2e6;">
<section>
<div class="col-md-12 pl-0 pr-0 mx-auto mb16 d-block">
<div>
<div class="p-3" style="background-color: #ffffff;">
<span class="oe_slogan" style="color: #e93a1d;font-size: 35px;font-weight: 500;">
Allows you to set login background image.</span>
</div>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg1.png" style="width: 99%; margin-bottom:inherit;">
</div>
<br>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg2.png" style="width: 99%; margin-bottom:inherit;">
</div>
<br>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg3.png" style="width: 99%; margin-bottom:inherit;">
</div>
</div>
</div>
</section><hr>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-release" role="tabpanel" aria-labelledby="pills-release-tab" style="margin-top: 22px;">
<section class="oe_container px-2" style="background-color: white;">
<div class="s_faq mt32 mb32" style="background-color:transparent !important;">
<div class="panel-group" id="accordion2" role="tablist" aria-multiselectable="true">
<div class="panel-group" style="margin-bottom:2%;">
<div class="panel panel-default overflow-hidden shadow" style="margin-bottom: -10px;">
<div class="panel-heading mt0 alert" style="border:1px solid transparent !important;margin:0;">
<h3 class="panel-title mb0"><a class="collapsed" style="font-family:Roboto; font-weight:500; color:#091E42; font-size:20px" data-toggle="collapse" href="#collapse_1" aria-expanded="false">
<span style=""><span style="color: #e31c2f;">V16.0.1.0</span><span style="color: #092a74;"> - DEC 1ST, 2022</span></span>
</a></h3>
</div>
<div id="collapse_1" class="panel-collapse collapse" style="">
<div class="mb16">
<div class="col-lg-12 col-md-12 ">
<ol style="padding:0 0 0 40px;margin:0px 0 10px 0;color: #0a2a67eb;">
<li>
<p>Background image in Login page</p>
</li>
<li>
<p>Optimized code.</p>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-faq" role="tabpanel" aria-labelledby="pills-faq-tab" style="margin-top: 70px;">
<section>
<div class="card-body p-0">
<div class="s_faq mx-2 mx-md-5 mb-5" style="background-color:#fefefe">
<div id="accordion">
<div class="card shadow mb-2" style="border: 1px solid;border-color: #dde1e5;margin-left: -65px;margin-right: -65px;">
<div class="card-header pb-0 py-3 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none">
<div style="font-size:1.4rem; font-weight:600; color:#05376d" class="pr-5">Q Is this app compatible with Odoo Enterprise?
</div>
<a style="width:48px; height:40px; line-height:11px; background-color:rgba(5, 55, 109, 0); border-radius:2px; padding:0; font-size:23px" data-toggle="collapse" class="card-link collapsed" href="#faqOne" aria-expanded="false"></a>
</div>
<div id="faqOne" class="collapse" data-parent="#accordion" style="">
<div class="card-body pt-0 pl-4">
<div style="font-size:1.2rem;color: #05376ddb;">
Yes, our app works with Odoo Enterprise.
</div>
</div>
</div>
</div>
<div class="card shadow mb-2" style="border: 1px solid;border-color: #dde1e5;margin-left: -65px;margin-right: -65px;">
<div class="card-header pb-0 py-3 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none">
<div style="font-size:1.4rem; font-weight:600; color:#05376d" class="pr-5">Q Is this app compatible with Windows or Ubuntu?
</div>
<a style="width:48px; height:40px; line-height:11px; background-color:rgba(5, 55, 109, 0); border-radius:2px; padding:0; font-size:23px" data-toggle="collapse" class="card-link collapsed" href="#faqThree" aria-expanded="false"></a>
</div>
<div id="faqThree" class="collapse" data-parent="#accordion" style="">
<div class="card-body pt-0 pl-4">
<div style="font-size:1.2rem;color: #05376ddb;">
Yes, our app works with Windows or Ubuntu operating system.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-support" role="tabpanel" aria-labelledby="pills-support-tab" style="margin-top: 80px;">
<section style="text-align: center;background-color: white;margin-bottom: 30px;">
<div style="background-color:white">
<div style="display:inline-block;margin-right:10px;">
<a href="mailto:sales@kanakinfosystems.com" target="_blank" style="width: 160px;height: 111px;display:inline-block;border:1px solid;border-color:#dee2e6;border-radius:3%;text-align:center;padding:0px;">
<div style="margin-left: -1px;margin-top: 14px;">
<img src="email.png" width="160px" style="margin-top: -32px;">
</div>
</a>
</div>
<div style="display:inline-block; margin-right:10px">
<a href="skype:kanakinfosystems?chat" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="skype.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
<div style="display:inline-block; margin-right:10px">
<a href="wa.me/9818108884" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="whatsapp.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
<div style="display:inline-block">
<a href="kanakinfosystems.com/support/ticket/submit" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="support-ticket.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
</div>
<div class="oe_row">
<div class="text-center">
<p style="border: 1px solid;width: 18cm;margin-left: 124px;border-color:#dee2e6;margin-top: 45px;"></p>
<div class="text-center">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">FREE 3 MONTHS <span style="color:red;">SUPPORT</span></span>
</div>
<p style="border-bottom: 2px solid;width: 18cm;margin-left: 124px;border-color:#dee2e6;margin-top: 2px;"></p>
<p style="font-size:21px;color: #23466d;font-weight:300;" class="px-sm-4 p-2 pt-4"> Kanak Infosystems LLP. will provide free 3 months support for bug fixes, any doubts or queries, installation, configuration support or any types of issues related related to this module.<br></p>
<div style="border: 1px solid;height: 55px;padding: 10px;width: 550px;margin-left: 197px;border-color: #dee2e6;border-radius: 5px;background-color: #f8f9fa;">
<span style="color:#113246;font-size:20px;font-weight:600;">NOTE:</span>
<span style="color: #113246;font-size:20px;font-weight:300;"><b>This module do not required extra configuration.</b></span>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</section>
</div>
</div>
</section>
</div>
<section style="background-color: white;margin-bottom: 26px;margin-top: 50px;">
<div style="border: 1px solid;margin-right: 75px;margin-left: 75px;border-color: #dee2e6;">
<div style="background-color: white;margin-bottom: 40px;text-align: center;">
<div class="text-center mt-4 mb-4">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">Suggested<span style="color:red;"> Apps</span></span>
</div>
<div class="row my-3 justify-content-center p-4" style="">
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/schedule_delivery_knk/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="schedule_delivery_knk.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">
Schedule Sale Delivery This Module allows to create delivery order based on delivery schedule in sale order line. sale order delivery by date.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Schedule Sale Delivery</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-md-6 col-lg-4" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/knk_sale_return/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="knk_sale_return.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Our Module allows user to efficiently track and manage Sale order along with their delivery returns, user can return products from Sale order itself without interacting with stock picking.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left color: black;"><b>Sale Order Return</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 52.13</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/order_history/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="order_history.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Sale Order History module manage Order History and easy way create order line from history.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Order History</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
</div>
<div class="row my-3 justify-content-center p-4" style="margin-bottom: 50px;">
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_approval_kanak/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_approval_kanak.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Sale Approval Rules module allow to approve Sale order in a flow of action of various stakeholder on the basis of their roles.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Approval Rules</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-4" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_estimate_knk/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_estimate.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Website Sale Estimate create a sales estimate and send email.And it also allows you to create sales quotations directly from sales estimates.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Estimate</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 35.67</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_loyalty/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_loyalty.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Customer can get Rewards points, by Loyalty Program Rules then the customer can spend those points to get rewards on purchasing.
</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Loyalty</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 52.13</h6>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</section>
<section style="text-align: center;background-color: white;margin-bottom: 30px;">
<div class="text-center mt-5 mb-5">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">Our<span style="color:red;"> Services</span></span>
</div>
<div style="background-color: white;margin-bottom: 45px;">
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/hire-odoo-developer" target="_blank" style="display:inline-block;text-align:center;padding: 0px;">
<div>
<img src="Hire-Odoo-Developer.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-customization-implementation-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Customization.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-development-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Development.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;">
<a href="https://kanakinfosystems.com/odoo-installation-services" target="_blank" style="display:inline-block;text-align: center;">
<div>
<img src="Odoo-Installation.png" width="230px">
</div>
</a>
</div>
</div>
<div style="background-color: white;">
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-integration-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Integration.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-resources" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Resources.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-themes" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Themes.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;">
<a href="https://kanakinfosystems.com/odoo-training" target="_blank" style="display:inline-block;text-align: center;">
<div>
<img src="Odoo-Training.png" width="230px">
</div>
</a>
</div>
</div>
</section>
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,4 +0,0 @@
//
// .right_align_x {
// text-align: center;
// }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 MiB

View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_company_form" model="ir.ui.view">
<field name="name">res.company.form.inherit.account</field>
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="before">
<field name="bg_image" widget="image"/>
</xpath>
</field>
</record>
<template id="custom_bg_image" name="Frontend Layout Image" inherit_id="web.frontend_layout">
<xpath expr="//div[@id='wrapwrap']" position="attributes">
<attribute name="t-attf-style">#{"background: transparent url('/dashboard') no-repeat scroll center center / cover;" if response_template == 'web.login' or 'auth_signup.signup' else ''}</attribute>
</xpath>
</template>
</odoo>

View File

@@ -86,7 +86,7 @@ class MachineTool(models.Model):
brand_id = fields.Many2one('sf.machine.brand', string='品牌')
state = fields.Selection(
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
default='正常', string="状态")
default='正常', string="机床状态")
# 一个机床对应一個加工工厂,一个加工工厂对应多个机床
factory_id = fields.Many2one('res.partner', string='所属工厂',
@@ -95,7 +95,7 @@ class MachineTool(models.Model):
supplier_id = fields.Many2one('res.partner', string='制造商',
domain="[('is_vendor', '=', True)]")
registration_date = fields.Date('注册日期')
state_zc = fields.Selection([("已注册", "已注册"), ("未注册", "未注册")], string="注册状态", default='未注册')
active = fields.Boolean('有效', default=True)
@api.constrains('rotate_speed')
@@ -198,6 +198,7 @@ class MachineTool(models.Model):
r = requests.post(strurl, json={}, data={'kw': kw, 'token': token}, headers=headers)
ret = r.json()
self.code = ret['message']
self.state_zc = "已注册"
if r == 200:
return "机床注册成功"
else:

View File

@@ -347,8 +347,7 @@
<field name="name"/>
<field name="brand_id"/>
<field name="type_id"/>
<field name="factory_id"/>
<field name="registration_date"/>
<field name="state_zc"/>
</tree>
</field>
</record>
@@ -365,6 +364,7 @@
<group>
<field name="MTcode" string="编码"/>
<field name="brand_id"
required="1"
domain="[('tag_ids', '=', '机床')]"

View File

@@ -56,7 +56,8 @@
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('mrp.mrp_production_workorder_tree_editable_view')}),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('mrp.workcenter_line_kanban')}) ]"/>
<field name="target">fullscreen</field>
<!-- <field name="target">fullscreen</field>-->
<field name="target">current</field>
<field name="domain">[('state', 'not in', ['done', 'cancel'])]</field>
<field name="context">{'search_default_workcenter_id': active_id}</field>
<field name="help" type="html">

Binary file not shown.

View File

@@ -0,0 +1,2 @@
from . import controllers
from . import models

View File

@@ -0,0 +1,28 @@
# -*- encoding: utf-8 -*-
{
'name': 'Login Background And Styles',
'version': '16.0.2.0.0',
'category': 'website',
'summary': """
You can customised login page like add background image or color and change position of login form.
""",
'author': 'YiZuo ltd.,',
'website': 'https://www.yizuo.ltd',
'license': 'AGPL-3',
'depends': ['base', 'base_setup', 'web', 'auth_signup'],
'data': [
'security/ir.model.access.csv',
'views/res_config_settings_views.xml',
'views/login_image.xml',
'templates/assets.xml',
'templates/left_login_template.xml',
'templates/right_login_template.xml',
'templates/middle_login_template.xml',
],
'qweb': [
],
'installable': True,
'application': True,
'images': ['static/description/banner.png'],
}

View File

@@ -0,0 +1,3 @@
# -*- encoding: utf-8 -*-
from . import main

View File

@@ -0,0 +1,149 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Changsha Yizuo Intelligent Technology Co., Ltd.
#
# Copyright (C) 2020-TODAY Yizuo Intelligent Technology.(<https://www.yizuo.ltd>).
# Author: Van(v16)(pengyb@yizuo.ltd)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
try:
import httpagentparser
except ImportError:
pass
from time import gmtime, strftime
from odoo.addons.web.controllers import home
from odoo.http import request
from odoo.exceptions import Warning
import odoo
import odoo.modules.registry
from odoo.tools.translate import _
from odoo import http
class Home(home.Home):
@http.route('/web/login', type='http', auth="public")
def web_login(self, redirect=None, **kw):
home.ensure_db()
request.params['login_success'] = False
if request.httprequest.method == 'GET' and redirect and request.session.uid:
return request.redirect(redirect)
if not request.uid:
request.uid = odoo.SUPERUSER_ID
values = request.params.copy()
try:
values['databases'] = http.db_list()
except odoo.exceptions.AccessDenied:
values['databases'] = None
if request.httprequest.method == 'POST':
old_uid = request.uid
uid = request.session.authenticate(request.session.db,
request.params['login'],
request.params['password'])
if uid is not False:
# user_rec = request.env['res.users'].sudo().search(
# [('id', '=', uid)])
# if user_rec.partner_id.email and user_rec.has_group(
# 'user_login_alert.receive_login_notification'):
# send_mail = 0
# agent = request.httprequest.environ.get('HTTP_USER_AGENT')
# agent_details = httpagentparser.detect(agent)
# user_os = agent_details['os']['name']
# browser_name = agent_details['browser']['name']
# ip_address = request.httprequest.environ['REMOTE_ADDR']
# if user_rec.last_logged_ip and user_rec.last_logged_browser and user_rec.last_logged_os:
# if user_rec.last_logged_ip != ip_address or user_rec.last_logged_browser != browser_name or user_rec.last_logged_os != user_os:
# send_mail = 1
# user_rec.last_logged_ip = ip_address
# user_rec.last_logged_browser = browser_name
# user_rec.last_logged_os = user_os
# else:
# send_mail = 0
# else:
# send_mail = 1
# user_rec.last_logged_ip = ip_address
# user_rec.last_logged_browser = browser_name
# user_rec.last_logged_os = user_os
# if send_mail == 1:
# email_to = user_rec.partner_id.email
# current_date_time = strftime("%Y-%m-%d %H:%M:%S",
# gmtime())
# message_body = 'Hi ' + user_rec.name + ' , Your account has been ' \
# 'accessed successfully. The details of the ' \
# 'system from which the account is accessed ...,'
# message_body += '<table border="1" width="100%" cellpadding="0" bgcolor="#ededed">'
# message_body += '<tr><td>' + 'OS' + '</td>' \
# '<td>' + user_os + '</td>' \
# '</tr>' \
# '<tr><td>' + 'Browser' + '</td>' \
# '<td>' + browser_name + '</td>' \
# '</tr>' \
# '<tr><td>' + 'IP Address' + '</td>' \
# '<td>' + ip_address + '</td>' \
# '</tr>'
# message_body += '</table>'
# message_body += 'Thank you'
# template_obj = request.env['mail.mail']
# template_data = {
# 'subject': 'Login Alert : ' + current_date_time,
# 'body_html': message_body,
# 'email_from': request.env.user.company_id.email,
# 'email_to': email_to
# }
# template_id = template_obj.create(template_data)
# template_obj.send(template_id)
request.params['login_success'] = True
if not redirect:
redirect = '/web'
return request.redirect(
self._login_redirect(uid, redirect=redirect))
request.uid = old_uid
values['error'] = _("Wrong login/password")
# get confi login set
param_obj = request.env['ir.config_parameter'].sudo()
values['reset_password_enabled'] = param_obj.get_param('auth_signup.reset_password')
values['signup_enabled'] = param_obj.get_param('auth_signup.invitation_scope') == 'b2c'
values['disable_footer'] = param_obj.get_param('disable_footer')
style = param_obj.get_param('login_background.style')
background = param_obj.get_param('login_background.background')
values['background_color'] = param_obj.get_param('login_background.color')
background_image = param_obj.get_param('login_background.background_image')
if background == 'image':
image_url = ''
if background_image:
base_url = param_obj.get_param('web.base.url')
image_url = base_url + '/web/image?' + 'model=login.image&id=' + background_image + '&field=image'
values['background_src'] = image_url or ''
values['background_color'] = ''
if background == 'color':
values['background_src'] = ''
if style == 'default' or style is False:
response = request.render('web.login', values)
elif style == 'left':
response = request.render('yizuo_login_background_and_styles.left_login_template', values)
elif style == 'right':
response = request.render('yizuo_login_background_and_styles.right_login_template', values)
else:
response = request.render('yizuo_login_background_and_styles.middle_login_template', values)
response.headers['X-Frame-Options'] = 'DENY'
return response

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
from . import res_config_settings
from . import login_image
# from . import website

View File

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class LoginImage(models.Model):
_name = 'login.image'
_rec_name = 'name'
image = fields.Binary(string="Image")
name = fields.Char(string="Name")

View File

@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, modules
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
style = fields.Selection([('default', 'Default'), ('left', 'Left'), ('right', 'Right'), ('middle', 'Middle')], help='Select Background Theme')
background = fields.Selection([('image', 'Image'), ('color', 'Color')], default='color', help='Select Background Theme')
background_image = fields.Many2one('login.image', string="Image", help='Select Background Image For Login Page')
color = fields.Char(string="Color", help="Choose your Background color")
@api.onchange('background')
def onchange_background(self):
if self.background == 'image':
self.color = False
elif self.background == 'color':
self.background_image = False
else:
self.background_image = self.color = False
@api.onchange('style')
def onchange_style(self):
if self.style == 'default' or self.style is False:
self.background = self.background_image = self.color = False
@api.model
def get_values(self):
res = super(ResConfigSettings, self).get_values()
image_id = int(self.env['ir.config_parameter'].sudo().get_param('login_background.background_image'))
res.update(
background_image=image_id,
color=self.env['ir.config_parameter'].sudo().get_param('login_background.color'),
background=self.env['ir.config_parameter'].sudo().get_param('login_background.background'),
style=self.env['ir.config_parameter'].sudo().get_param('login_background.style'),
)
return res
def set_values(self):
super(ResConfigSettings, self).set_values()
param = self.env['ir.config_parameter'].sudo()
set_image = self.background_image.id or False
set_color = self.color or False
set_background = self.background or False
set_style = self.style or False
param.set_param('login_background.background_image', set_image)
param.set_param('login_background.color', set_color)
param.set_param('login_background.background', set_background)
param.set_param('login_background.style', set_style)

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_login_image,access_login_image,model_login_image,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_login_image access_login_image model_login_image 1 1 1 1

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,149 @@
<section class="oe_container oe_dark lead">
<div class="oe_row" style="width: 100% !important;">
<div class="oe_span12" style="width: 100% !important;">
<div class="panel panel-primary" style="border:none">
<div class="panel-body">
<ul class="list-unstyled">
<div class="alert alert-info" style="background-color:#ed2f2f;color:#FFF"><i class="fa fa-hand-o-right"></i> <strong> Key Features </strong></div>
<li><i class="fa fa-key" style="color:#ed2f2f"></i> This module is used for customized login page.</li>
<li><i class="fa fa-key" style="color:#ed2f2f"></i> User can Select Login Form Position and also select background color or image.</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark lead">
<div class="oe_row" style="width: 100% !important;">
<div class="oe_span12" style="width: 100% !important;">
<div class="panel panel-primary" style="border:none">
<div class="panel-body">
<div class="alert alert-info" style="background-color:#ed2f2f;color:#FFF">
<i class="fa fa-hand-o-right"></i>
<strong>Settings</strong>
</div>
<p>
<h2 class="oe_slogan">General Settings</h2>
<p class="oe_slogan"><b>In this setting user can add Image to use as login background image.</b></p>
<img class="oe_picture oe_screenshot" src="menu.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Select Style</h2>
<p class="oe_slogan">Here user can select position of login form</p>
<img class="oe_picture oe_screenshot" src="style.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Select Background</h2>
<p class="oe_slogan">Here user can select image or color as login Background</p>
<img class="oe_picture oe_screenshot" src="select_background.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Select Image</h2>
<p class="oe_slogan">Here user can select Background image</p>
<img class="oe_picture oe_screenshot" src="select_image.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Left align login form with Background Image</h2>
<p class="oe_slogan"></p>
<img class="oe_picture oe_screenshot" src="left_login_view.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Right align login form with Background Image</h2>
<p class="oe_slogan"></p>
<img class="oe_picture oe_screenshot" src="right_login_view.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Select Color</h2>
<p class="oe_slogan">Here user can select Background color</p>
<img class="oe_picture oe_screenshot" src="select_color.png" alt="" style="width: 82% !important;">
</p>
<p>
<h2 class="oe_slogan">Center align login form with Background Color</h2>
<p class="oe_slogan"></p>
<img class="oe_picture oe_screenshot" src="middle_login_view.png" alt="" style="width: 82% !important;">
</p>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark lead">
<div class="oe_row" style="width: 100% !important;">
<div class="oe_span12" style="width: 100% !important;">
<div class="panel panel-primary" style="border:none">
<div class="panel-body" style="text-align: center;">
<ul class="list-unstyled">
<div class="alert alert-info" style="background-color:#ed2f2f;color:#FFF"><i class="fa fa-globe" aria-hidden="true"></i> <strong> Our Service </strong></div>
</ul>
<table style="width: 100%;">
<tr>
<th style="text-align: center;width: 33%;"><img src="service/Customization.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Implementation.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Integration.png" alt="" style="width:60px;height:60px;"></th>
</tr>
<tr style="height: 40px;font-size: 18px;">
<td style="text-align: center;width: 33%;">Odoo Customization</td>
<td style="text-align: center;width: 33%;">Odoo Implementation</td>
<td style="text-align: center;width: 33%;">Odoo Integration</td>
</tr>
</table>
<br></br>
<table style="width: 100%;">
<tr>
<th style="text-align: center;width: 33%;"><img src="service/Migration.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Training.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Installation.png" alt="" style="width:60px;height:60px;"></th>
</tr>
<tr style="height: 40px;font-size: 18px;">
<td style="text-align: center;width: 33%;">Odoo Migration</td>
<td style="text-align: center;width: 33%;">Odoo Training</td>
<td style="text-align: center;width: 33%;">Odoo Installation</td>
</tr>
</table>
<br></br>
<table style="width: 100%;">
<tr>
<th style="text-align: center;width: 33%;"><img src="service/Consulting.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Support.png" alt="" style="width:60px;height:60px;"></th>
<th style="text-align: center;width: 33%;"><img src="service/Hire.png" alt="" style="width:60px;height:60px;"></th>
</tr>
<tr style="height: 40px;font-size: 18px;">
<td style="text-align: center;width: 33%;">Odoo Consulting</td>
<td style="text-align: center;width: 33%;">Odoo Support</td>
<td style="text-align: center;width: 33%;">Hire Developer</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark lead">
<div class="oe_row" style="width: 100% !important;">
<div class="oe_span12" style="width: 100% !important;">
<div class="panel panel-primary" style="border:none">
<div class="panel-body" style="text-align: center;">
<ul class="list-unstyled">
<div class="alert alert-info" style="background-color:#ed2f2f;color:#FFF"><i class="fa fa-life-ring" aria-hidden="true"></i> <strong> Get Help & Support </strong></div>
<li><i class="fa fa-key" style="color:#ed2f2f"></i> You will get 30 Days free support incase any bugs or issue.</li>
<br>
<li><img style="display: block;margin: 0 auto;height: 211px;" class="oe_picture oe_screenshot" src="yizuo_logo.png" alt=""></li>
<br><br>
</ul>
<table style="width: 100%;">
<tr>
<th style="text-align: center;"><img src="website.png" alt="" style="width:70px;height:70px;"></th>
<th style="text-align: center;"><img src="mail.png" alt="" style="width:70px;height:70px;"></th>
<th style="text-align: center;"><img src="skype.png" alt="" style="width:70px;height:70px;"></th>
</tr>
<tr style="height: 61px;font-size: 20px;">
<td style="text-align: center;">www.fortutechims.com</td>
<td style="text-align: center;">info@fortutechims.com</td>
<td style="text-align: center;">info@fortutechims.com</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,55 @@
.container{
max-width: 100%;
}
.background{
height:100%;
display: block;
background-repeat: no-repeat;
background-position: center center;
background-attachment: fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
-webkit-filter: blur(0px);
z-index: -1;
}
.body_login {
display: inline-block;
text-align: center;
white-space: nowrap;
width: 100%;
position: relative;
margin: 0px;
padding: 0px;
opacity:0.7;
}
#mcard{
margin-top: 7%;
padding: 3%;
max-width:350px
}
#bcard{
padding: 3%;
height: 100%;
}
.body_login input,
.body_login select {
background-color: transparent !important;
border-top: 0px;
border-left: 0px;
border-right: 0px;
/* border-bottom: 1px solid #FED766; */
border-radius: 0px;
color: black;
font-size: 18px;
font-weight: 300;
transition: border-color 0.7s ease;
box-shadow: none!important;
text-align: center;
}
.effect:hover{
box-shadow: 5px 5px 5px black;
}

View File

@@ -0,0 +1,165 @@
html, body {
margin: 0;
padding: 0;
}
.left {
float: left;
width: 510px;
height: 300px;
#background: #bfbfbf;
margin-right: -100%;
}
.right {
float: left;
width: 100%;
}
.right-content {
height: 300px;
margin-left: 532px;
padding-left:81px;
#background: #efefef;
}
.banner {
left: 0px;
width: 510px;
height: 978px;
margin: 22px;
background: #005EFE;
}
.banner p{
position: absolute;
left: 65px;
top: 59px;
width: 172px;
height: 64px;
opacity: 1;
#background: #FFFFFF;
}
.banner .logo{
position: absolute;
left: 0px;
top: 8px;
width: 46.02px;
height: 38px;
opacity: 1;
#background: #FFFFFF;
}
.banner .logo_name {
/* CKYC */
position: absolute;
left: 55px;
top: 0px;
width: 117px;
height: 64px;
opacity: 1;
font-family: Roboto-Bold;
font-size: 46px;
font-weight: bold;
line-height: 64px;
letter-spacing: 0px;
color: #FFFFFF;
}
.right .login_top{
padding-top: 248px;
height:0px;
margin: 0px;
}
.right .login_title {
/* Login */
margin:0px;
font-family: Poppins-SemiBold;
font-size: 28px;
font-weight: 600;
line-height: 39px;
letter-spacing: 0px;
color: #0D1D54;
}
.right .login_small_title {
/* Login */
/* Thank you for get back to CKYC. */
margin:15px 0px 0px 0px;
width: 258px;
height: 22px;
opacity: 1;
font-family: Poppins-Medium;
font-size: 16px;
font-weight: 500;
line-height: 22px;
letter-spacing: 0px;
color: #404B7C;
}
.right .input_label {
/* Email */
margin: 72px 0px 0px 0px;
width: 44px;
height: 22px;
opacity: 1;
font-family: Poppins-Regular;
font-size: 16px;
font-weight: normal;
line-height: 22px;
letter-spacing: 0px;
color: #404B7C;
}
.right input {
/* Rectangle 2 */
margin: 15px 0px 0px 0px;
width: 432px;
height: 68px;
border-radius: 8px;
opacity: 1;
padding: 0px 28px 0px 28px;
background: #FFFFFF;
box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.08);
font-family: Poppins-Regular;
font-size: 16px;
font-weight: normal;
line-height: 22px;
letter-spacing: 0px;
#color: #D5D5D5;
}
.right .password {
}
.right .password input {
}

View File

@@ -0,0 +1,57 @@
.left {
background: #005EFE;
}
.left p{
#position:absolute;
margin: 65px 0px 0px 0px;
#width: 1px;
opacity: 1;
#background: #FFFFFF;
}
.left .logo{
#position: absolute;
width: 46.02px;
height: 38px;
#background: #FFFFFF;
}
.left .logo_name {
/* CKYC */
font-family: Roboto-Bold;
font-size: 46px;
font-weight: bold;
line-height: 64px;
letter-spacing: 0px;
color: #FFFFFF;
}
.right{
}
.right .login_top{
padding-top: 248px;
height:0px;
margin: 0px;
}
.right .login_title {
/* Login */
margin:0px;
font-family: Poppins-SemiBold;
font-size: 28px;
font-weight: 600;
line-height: 39px;
letter-spacing: 0px;
color: #0D1D54;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,40 @@
<!doctype html>
<html lang="zh-CN">
<head>
<!-- 必须的 meta 标签 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap 的 CSS 文件 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<!-- 自定义的 的 CSS 文件 -->
<link href="./css/yizuo_login_style_bootstrap.css" rel="stylesheet" crossorigin="anonymous">
<title>Login by Bootstrap</title>
</head>
<body>
<div class="container">
<div class="row g-4">
<div class="col-lg-4 col-sm-0 left">
<p>
<img src="./images/logo.png" class="rounded float-start logo"/>
<span class="logo_name">CKYC</span>
</p>
</div>
<div class="col-lg-6 col-sm-12 right">
<p class="login_top"></p>
<p class="login_title">login</p>
<p class="login_small_title">Thank you for get back to CKYC.</p>
<p class="email input_label">email</p>
<input name="email" type="text" />
<p class="password input_label">password</p>
<input name="password" type="password" />
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="./css/yizuo_login_style.css"/>
</head>
<body>
<div>
<div class="left">
<div class="banner">
<p>
<img src="./images/logo.png" class="logo"/>
<span class="logo_name">CKYC</span>
</p>
</div>
</div>
<div class="right">
<div class="right-content">
<p class="login_top"></p>
<p class="login_title">login</p>
<p class="login_small_title">Thank you for get back to CKYC.</p>
<p class="email input_label">email</p>
<input name="email" type="text" />
<p class="password input_label">password</p>
<input name="password" type="password" />
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Assets -->
<record id="yizuo_login_background_and_styles.assets_login" model="ir.asset">
<field name="name">Login CSS</field>
<field name="bundle">web.assets_frontend</field>
<field name="path">/yizuo_login_background_and_styles/static/src/css/web_login_style.css</field>
</record>
</odoo>

View File

@@ -0,0 +1,78 @@
<odoo>
<template id="left_login_layout" name="Left Login Layout">
<t t-call="web.frontend_layout">
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
<t t-set="body_classname" t-value="'bg-100'"/>
<t t-set="no_header" t-value="True"/>
<t t-set="no_footer" t-value="True"/>
<div class="background" t-attf-style="background-image: url('#{background_src}'); background-color: #{background_color};">
<div class="container body_login" style="height: 100%;">
<div id="bcard" t-attf-class="card border-0 mx-auto bg-100 {{login_card_classes}} o_database_list" style="float:left;">
<div class="card-body">
<div style="margin-top: 30%;">
<div t-attf-class="text-center pb-3 border-bottom {{'mb-3' if form_small else 'mb-4'}}">
<!-- <img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>-->
<img t-attf-src="/yizuo_login_background_and_styles/static/src/images/login_logo.png" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>
</div>
<t t-raw="0"/>
<div class="text-center small mt-4 pt-3 border-top" t-if="not disable_footer">
<!-- <t t-if="not disable_database_manager">-->
<!-- <a class="border-right pr-2 mr-1" href="/web/database/manager">Manage Databases</a>-->
<!-- </t>-->
<!-- <a href="https://www.odoo.com?utm_source=db&amp;utm_medium=auth" target="_blank">Powered by <span>Odoo</span></a>-->
</div>
</div>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="left_login_template" name="Login">
<t t-call="yizuo_login_background_and_styles.left_login_layout">
<form class="oe_login_form" role="form" t-attf-action="/web/login" method="post" onsubmit="this.action = '/web/login' + location.hash">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="form-group field-db" t-if="databases and len(databases) &gt; 1">
<div t-attf-class="input-group {{'input-group-sm' if form_small else ''}}">
<input type="text" name="db" t-att-value="request.db" id="db" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" readonly="readonly"/>
<span class="input-group-append">
<a role="button" href="/web/database/selector" class="btn btn-secondary">Select <i class="fa fa-database" role="img" aria-label="Database" title="Database"></i></a>
</span>
</div>
</div>
<div class="form-group field-login">
<input type="text" placeholder="账号 ..." name="login" t-att-value="login" id="login" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autofocus="autofocus" autocapitalize="off"/>
</div>
<div class="form-group field-password">
<input type="password" placeholder="密码 ..." name="password" id="password" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autocomplete="current-password" t-att-autofocus="'autofocus' if login else None" maxlength="4096"/>
</div>
<p class="alert alert-danger" t-if="error" role="alert">
<t t-esc="error"/>
</p>
<p class="alert alert-success" t-if="message" role="status">
<t t-esc="message"/>
</p>
<div t-attf-class="clearfix oe_login_buttons text-center mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button type="submit" class="btn btn-primary btn-block">登录</button>
<t t-if="debug">
<button type="submit" name="redirect" value="/web/become" class="btn btn-link btn-sm btn-block">Log in as superuser</button>
</t>
<div class="justify-content-between mt-2 d-flex small">
<a t-if="signup_enabled" t-attf-href="/web/signup?{{ keep_query() }}">Don't have an account?</a>
<a t-if="reset_password_enabled" t-attf-href="/web/reset_password?{{ keep_query() }}">Reset Password</a>
</div>
<div class="o_login_auth"/>
</div>
<input type="hidden" name="redirect" t-att-value="redirect"/>
</form>
</t>
</template>
</odoo>

View File

@@ -0,0 +1,81 @@
<odoo>
<template id="middle_login_layout" name="Middle Login Layout">
<t t-call="web.layout">
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
<t t-set="head">
<t t-call-assets="web.assets_common" t-js="false"/>
<t t-call-assets="web.assets_frontend" t-js="false"/>
<t t-call-assets="web.assets_common" t-css="false"/>
<t t-call-assets="web.assets_frontend" t-css="false"/>
</t>
<t t-set="body_classname" t-value="'bg-100'"/>
<div class="background" t-attf-style="background-image: url('#{background_src}'); background-color: #{background_color};">
<div class="container body_login">
<div t-attf-class="card border-0 mx-auto bg-100 {{login_card_classes}} o_database_list" id="mcard">
<div class="card-body">
<div>
<div t-attf-class="text-center pb-3 border-bottom {{'mb-3' if form_small else 'mb-4'}}">
<!-- <img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>-->
<img t-attf-src="/yizuo_login_background_and_styles/static/src/images/login_logo.png" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>
</div>
<t t-raw="0"/>
<div class="text-center small mt-4 pt-3 border-top" t-if="not disable_footer">
<!-- <t t-if="not disable_database_manager">-->
<!-- <a class="border-right pr-2 mr-1" href="/web/database/manager">Manage Databases</a>-->
<!-- </t>-->
<!-- <a href="https://www.odoo.com?utm_source=db&amp;utm_medium=auth" target="_blank">Powered by <span>Odoo</span></a>-->
</div>
</div>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="middle_login_template" name="Login">
<t t-call="yizuo_login_background_and_styles.middle_login_layout">
<form class="oe_login_form" role="form" t-attf-action="/web/login" method="post" onsubmit="this.action = '/web/login' + location.hash">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="form-group field-db" t-if="databases and len(databases) &gt; 1">
<div t-attf-class="input-group {{'input-group-sm' if form_small else ''}}">
<input type="text" name="db" t-att-value="request.db" id="db" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" readonly="readonly"/>
<span class="input-group-append">
<a role="button" href="/web/database/selector" class="btn btn-secondary">Select <i class="fa fa-database" role="img" aria-label="Database" title="Database"></i></a>
</span>
</div>
</div>
<div class="form-group field-login">
<input type="text" placeholder="账号 ..." name="login" t-att-value="login" id="login" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autofocus="autofocus" autocapitalize="off"/>
</div>
<div class="form-group field-password">
<input type="password" placeholder="密码 ..." name="password" id="password" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autocomplete="current-password" t-att-autofocus="'autofocus' if login else None" maxlength="4096"/>
</div>
<p class="alert alert-danger" t-if="error" role="alert">
<t t-esc="error"/>
</p>
<p class="alert alert-success" t-if="message" role="status">
<t t-esc="message"/>
</p>
<div t-attf-class="clearfix oe_login_buttons text-center mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button type="submit" class="btn btn-primary btn-block">登 录</button>
<t t-if="debug">
<button type="submit" name="redirect" value="/web/become" class="btn btn-link btn-sm btn-block">Log in as superuser</button>
</t>
<div class="justify-content-between mt-2 d-flex small">
<a t-if="signup_enabled" t-attf-href="/web/signup?{{ keep_query() }}">Don't have an account?</a>
<a t-if="reset_password_enabled" t-attf-href="/web/reset_password?{{ keep_query() }}">Reset Password</a>
</div>
<div class="o_login_auth"/>
</div>
<input type="hidden" name="redirect" t-att-value="redirect"/>
</form>
</t>
</template>
</odoo>

View File

@@ -0,0 +1,77 @@
<odoo>
<template id="right_login_layout" name="right Login Layout">
<t t-call="web.frontend_layout">
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
<t t-set="body_classname" t-value="'bg-100'"/>
<t t-set="no_header" t-value="True"/>
<t t-set="no_footer" t-value="True"/>
<div class="background" t-attf-style="background-image: url('#{background_src}'); background-color: #{background_color};">
<div class="container body_login" style="height: 100%;">
<div id="bcard" t-attf-class="card border-0 mx-auto bg-100 {{login_card_classes}} o_database_list" style="float:right;">
<div class="card-body">
<div style="margin-top: 30%;">
<div t-attf-class="text-center pb-3 border-bottom {{'mb-3' if form_small else 'mb-4'}}">
<!-- <img t-attf-src="/web/binary/company_logo{{ '?dbname='+db if db else '' }}" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>-->
<img t-attf-src="/yizuo_login_background_and_styles/static/src/images/login_logo.png" alt="Logo" style="max-height:120px; max-width: 100%; width:auto"/>
</div>
<t t-raw="0"/>
<!-- <div class="text-center small mt-4 pt-3 border-top" t-if="not disable_footer">-->
<!-- <t t-if="not disable_database_manager">-->
<!-- <a class="border-right pr-2 mr-1" href="/web/database/manager">Manage Databases</a>-->
<!-- </t>-->
<!-- <a href="https://www.odoo.com?utm_source=db&amp;utm_medium=auth" target="_blank">Powered by <span>Odoo</span></a>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
</div>
</t>
</template>
<template id="yizuo_login_background_and_styles.right_login_template" name="Login">
<t t-call="yizuo_login_background_and_styles.right_login_layout">
<form class="oe_login_form" role="form" t-attf-action="/web/login" method="post" onsubmit="this.action = '/web/login' + location.hash">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="form-group field-db" t-if="databases and len(databases) &gt; 1">
<div t-attf-class="input-group {{'input-group-sm' if form_small else ''}}">
<input type="text" name="db" t-att-value="request.db" id="db" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" readonly="readonly"/>
<span class="input-group-append">
<a role="button" href="/web/database/selector" class="btn btn-secondary">Select <i class="fa fa-database" role="img" aria-label="Database" title="Database"></i></a>
</span>
</div>
</div>
<div class="form-group field-login effect">
<input type="text" placeholder="账号 ..." name="login" t-att-value="login" id="login" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autofocus="autofocus" autocapitalize="off"/>
</div>
<div class="form-group field-password effect">
<input type="password" placeholder="密码 ..." name="password" id="password" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autocomplete="current-password" t-att-autofocus="'autofocus' if login else None" maxlength="4096"/>
</div>
<p class="alert alert-danger" t-if="error" role="alert">
<t t-esc="error"/>
</p>
<p class="alert alert-success" t-if="message" role="status">
<t t-esc="message"/>
</p>
<div t-attf-class="clearfix oe_login_buttons text-center mb-1 {{'pt-2' if form_small else 'pt-3'}}">
<button type="submit" class="btn btn-primary btn-block">登 录</button>
<t t-if="debug">
<button type="submit" name="redirect" value="/web/become" class="btn btn-link btn-sm btn-block">Log in as superuser</button>
</t>
<div class="justify-content-between mt-2 d-flex small">
<a t-if="signup_enabled" t-attf-href="/web/signup?{{ keep_query() }}">Don't have an account?</a>
<a t-if="reset_password_enabled" t-attf-href="/web/reset_password?{{ keep_query() }}">Reset Password</a>
</div>
<div class="o_login_auth"/>
</div>
<input type="hidden" name="redirect" t-att-value="redirect"/>
</form>
</t>
</template>
</odoo>

View File

@@ -0,0 +1,34 @@
<odoo>
<data>
<record model="ir.ui.view" id="view_login_tree">
<field name="name">login.image</field>
<field name="model">login.image</field>
<field name="priority" eval="16"/>
<field name="arch" type="xml">
<tree string="faculty list">
<field name="name"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="view_login_form">
<field name="name">login.image</field>
<field name="model">login.image</field>
<field name="priority" eval="16"/>
<field name="arch" type="xml">
<form string="Image">
<group>
<field name="name" invisible="0" readonly="1" force_save="1"/>
<field widget="binary" height="64" name="image" filename="name" />
</group>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_image_data">
<field name="name">Image</field>
<field name="res_model">login.image</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_image" name="Background Image" parent="base.menu_users" action="yizuo_login_background_and_styles.action_image_data"/>
</data>
</odoo>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record
id="res_config_settings_view_form_login_background"
model="ir.ui.view">
<field name="name">res.config.settings.form.inherit</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@id='companies']" position="after">
<div>
<h2>Login Background</h2>
<div class="row mt16 o_settings_container"
name="default_taxes_setting_container">
<div class="col-12 col-lg-6 o_setting_box"
id="default_taxes">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<div class="content-group">
<div class="row mt16">
<label string="Style" for="style" class="col-lg-3 o_light_label"/>
<field name="style"/>
<label string="Background" for="background" class="col-lg-3 o_light_label"
attrs="{'invisible': [('style','in',['default',False])]}"/>
<field name="background"
attrs="{'invisible': [('style','in',['default',False])]}"/>
<label string="Image" for="background_image" class="col-lg-3 o_light_label"
attrs="{'invisible': [('background','!=','image')]}"/>
<field name="background_image" options="{'no_create': True}"
attrs="{'invisible': [('background','!=','image')], 'required':[('background', '=', 'image')]}"/>
<label string="Color" for="color" class="col-lg-3 o_light_label"
attrs="{'invisible': [('background','!=','color')]}"/>
<field name="color" widget="color" attrs="{'invisible': [('background','!=','color')]}"/>
</div>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>