mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 07:12:02 +02:00
vanilla 18.0
This commit is contained in:
parent
0a7ae8db93
commit
5454004ff9
1963 changed files with 1187893 additions and 919508 deletions
|
|
@ -3,14 +3,22 @@
|
|||
|
||||
<!-- Call this template instead of "web.assets_tests" to have the proper conditional check -->
|
||||
<template id="conditional_assets_tests" name="Tests Assets Bundle">
|
||||
<t t-call-assets="web.assets_tests" t-if="'tests' in debug or test_mode_enabled" defer_load="True" />
|
||||
<t t-if="'tests' in debug or test_mode_enabled">
|
||||
<t t-if="ignore_missing_deps">
|
||||
<!-- FIXME: This is only to ignore the errors for the lazy loading. To allow all tests assets and tours to be in the same bundle, the assets_tests bundle ignores missing dependencies -->
|
||||
<t t-call-assets="web.__assets_tests_call__" defer_load="True" />
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-call-assets="web.assets_tests" defer_load="True" />
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="web.layout" name="Web layout"><!DOCTYPE html>
|
||||
<html t-att="html_data or {}">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<title t-esc="title or 'Odoo'"/>
|
||||
<link type="image/x-icon" rel="shortcut icon" t-att-href="x_icon or '/web/static/img/favicon.ico'"/>
|
||||
<script id="web.layout.odooscript" type="text/javascript">
|
||||
|
|
@ -44,7 +52,9 @@
|
|||
}
|
||||
</script>
|
||||
<t t-call-assets="web.assets_frontend_minimal" t-css="false" defer_load="True"/>
|
||||
<t t-call="web.conditional_assets_tests"/>
|
||||
<t t-call="web.conditional_assets_tests">
|
||||
<t t-set="ignore_missing_deps" t-value="True"/>
|
||||
</t>
|
||||
<t t-call-assets="web.assets_frontend_lazy" t-css="false" lazy_load="True"/>
|
||||
</xpath>
|
||||
<xpath expr="//t[@t-out='0']" position="replace">
|
||||
|
|
@ -109,7 +119,7 @@
|
|||
<div class="container py-5">
|
||||
<div t-attf-class="card border-0 mx-auto bg-100 {{login_card_classes}} o_database_list" style="max-width: 300px;">
|
||||
<div class="card-body">
|
||||
<div t-attf-class="text-center pb-3 border-bottom {{'mb-3' if form_small else 'mb-4'}}">
|
||||
<div class="text-center pb-3 border-bottom 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"/>
|
||||
</div>
|
||||
<t t-out="0"/>
|
||||
|
|
@ -127,25 +137,26 @@
|
|||
|
||||
<template id="web.login" name="Login">
|
||||
<t t-call="web.login_layout">
|
||||
<form class="oe_login_form" role="form" t-attf-action="/web/login" method="post" onsubmit="this.action = '/web/login' + location.hash">
|
||||
<owl-component t-if="not login" name="web.user_switch" />
|
||||
<form t-attf-class="oe_login_form #{'' if login else 'd-none'}" 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="mb-3" t-if="databases and len(databases) > 1">
|
||||
<label for="db" class="col-form-label">Database</label>
|
||||
<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"/>
|
||||
<div class="input-group">
|
||||
<input type="text" name="db" t-att-value="request.db" id="db" class="form-control" required="required" readonly="readonly"/>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3 field-login">
|
||||
<label for="login" class="form-label">Email</label>
|
||||
<input type="text" placeholder="Email" name="login" t-att-value="login" id="login" t-attf-class="form-control #{'form-control-sm' if form_small else ''}" required="required" autocomplete="username" autofocus="autofocus" autocapitalize="off"/>
|
||||
<label for="login" class="form-label d-flex justify-content-between">Email</label>
|
||||
<input type="text" placeholder="Email" name="login" t-att-value="login" id="login" class="form-control" required="required" autocapitalize="off" autocomplete="username"/>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="password" class="form-label">Password</label>
|
||||
<input type="password" placeholder="Password" 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"/>
|
||||
<label for="password" class="form-label d-flex justify-content-between">Password</label>
|
||||
<input type="password" placeholder="Password" name="password" id="password" class="form-control" 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">
|
||||
|
|
@ -155,7 +166,7 @@
|
|||
<t t-esc="message"/>
|
||||
</p>
|
||||
|
||||
<div t-attf-class="clearfix oe_login_buttons text-center gap-1 d-grid mb-1 {{'pt-2' if form_small else 'pt-3'}}">
|
||||
<div class="oe_login_buttons text-center gap-1 d-grid mb-1 pt-3">
|
||||
<button type="submit" class="btn btn-primary">Log in</button>
|
||||
<t t-if="debug">
|
||||
<button type="submit" name="redirect" value="/web/become" class="btn btn-link btn-sm">Log in as superuser</button>
|
||||
|
|
@ -163,6 +174,7 @@
|
|||
<div class="o_login_auth"/>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="type" value="password"/>
|
||||
<input type="hidden" name="redirect" t-att-value="redirect"/>
|
||||
</form>
|
||||
</t>
|
||||
|
|
@ -187,7 +199,7 @@
|
|||
body {
|
||||
position: relative; /* bootstrap-datepicker needs this */
|
||||
}
|
||||
body:not(.debug) .modal-backdrop, body:not(.debug) .modal, body:not(.debug) .ui-autocomplete {
|
||||
body:not(.debug) .modal-backdrop, body:not(.debug) .modal:not(.o_module_error), body:not(.debug) .ui-autocomplete {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
#qunit-testrunner-toolbar label {
|
||||
|
|
@ -202,15 +214,31 @@
|
|||
<t t-call-assets="web.tests_assets" t-css="False"/>
|
||||
</template>
|
||||
|
||||
<template id="web.unit_tests_suite">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="title">Web Unit Tests</t>
|
||||
<t t-set="head">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
|
||||
|
||||
<script type="text/javascript">
|
||||
odoo.__session_info__ = <t t-out="json.dumps(session_info)"/>;
|
||||
</script>
|
||||
|
||||
<t t-call-assets="web.assets_unit_tests_setup" />
|
||||
<t t-call-assets="web.assets_unit_tests" defer_load="True" />
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="web.qunit_suite">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="title">Web Tests</t>
|
||||
<t t-set="head">
|
||||
<t t-call-assets="web.assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-js="false"/>
|
||||
<t t-call-assets="web.tests_assets_common" t-css="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-css="false"/>
|
||||
<script type="text/javascript">
|
||||
odoo.__session_info__ = <t t-out="json.dumps(session_info)"/>;
|
||||
</script>
|
||||
|
||||
<t t-call="web.test_helpers"/>
|
||||
|
||||
|
|
@ -228,11 +256,9 @@
|
|||
<t t-set="title">Web Mobile Tests</t>
|
||||
<t t-set="head">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
|
||||
|
||||
<t t-call-assets="web.assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-js="false"/>
|
||||
<t t-call-assets="web.tests_assets_common" t-css="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-css="false"/>
|
||||
<script type="text/javascript">
|
||||
odoo.__session_info__ = <t t-out="json.dumps(session_info)"/>;
|
||||
</script>
|
||||
|
||||
<t t-call="web.test_helpers"/>
|
||||
|
||||
|
|
@ -244,96 +270,119 @@
|
|||
</t>
|
||||
</template>
|
||||
|
||||
<template id="web.benchmark_suite">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="title">Web Benchmarks</t>
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/web/static/lib/benchmarkjs/lodash.js"></script>
|
||||
<script type="text/javascript" src="/web/static/lib/benchmarkjs/benchmark.js"></script>
|
||||
|
||||
<t t-call-assets="web.assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-js="false"/>
|
||||
<t t-call-assets="web.assets_common" t-css="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-css="false"/>
|
||||
|
||||
<t t-call="web.test_helpers"/>
|
||||
|
||||
<script type="text/javascript">
|
||||
QUnit.config.hidepassed = false;
|
||||
</script>
|
||||
|
||||
<style>
|
||||
body:not(.debug) .modal-backdrop, body:not(.debug) .modal, body:not(.debug) .ui-autocomplete {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
#qunit-testrunner-toolbar label {
|
||||
font-weight: inherit;
|
||||
margin-bottom: inherit;
|
||||
}
|
||||
#qunit-testrunner-toolbar input[type=text] {
|
||||
width: inherit;
|
||||
display: inherit;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript" src="/web/static/tests/views/list_benchmarks.js"></script>
|
||||
<script type="text/javascript" src="/web/static/tests/views/kanban_benchmarks.js"></script>
|
||||
<script type="text/javascript" src="/web/static/tests/views/form_benchmarks.js"></script>
|
||||
|
||||
</t>
|
||||
|
||||
<div id="qunit"/>
|
||||
<div id="qunit-fixture"/>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="web.webclient_bootstrap">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="head_web">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
|
||||
<!-- Chrome, Firefox OS and Opera -->
|
||||
<meta name="theme-color" content="#875A7B"/>
|
||||
<link rel="icon" sizes="192x192" href="/web/static/img/mobile-icons/android-192x192.png"/>
|
||||
|
||||
<!-- iOS Safari -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes"/>
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
|
||||
<link rel="apple-touch-icon" href="/web/static/img/mobile-icons/apple-152x152.png"/>
|
||||
|
||||
<!-- Windows Phone -->
|
||||
<meta name="msapplication-navbutton-color" content="#875A7B"/>
|
||||
<meta name="msapplication-TileColor" content="#875A7B"/>
|
||||
<meta name="msapplication-TileImage" content="/web/static/img/mobile-icons/windows-144x144.png"/>
|
||||
|
||||
<meta name="theme-color" content="#71639e"/>
|
||||
<link rel="manifest" href="/web/manifest.webmanifest" crossorigin="use-credentials"/>
|
||||
<link rel="apple-touch-icon" href="/web/static/img/odoo-icon-ios.png"/>
|
||||
<script type="text/javascript">
|
||||
odoo.__session_info__ = <t t-out="json.dumps(session_info)"/>;
|
||||
odoo.reloadMenus = () => fetch(`/web/webclient/load_menus/${odoo.__session_info__.cache_hashes.load_menus}`).then(res => res.json());
|
||||
odoo.loadMenusPromise = odoo.reloadMenus();
|
||||
// Block to avoid leaking variables in the script scope
|
||||
{
|
||||
odoo.__session_info__ = <t t-out="json.dumps(session_info)"/>;
|
||||
const { user_context, cache_hashes } = odoo.__session_info__;
|
||||
const lang = new URLSearchParams(document.location.search).get("lang");
|
||||
let menuURL = `/web/webclient/load_menus/${cache_hashes.load_menus}`;
|
||||
if (lang) {
|
||||
user_context.lang = lang;
|
||||
menuURL += `?lang=${lang}`
|
||||
}
|
||||
odoo.reloadMenus = () => fetch(menuURL).then(res => res.json());
|
||||
odoo.loadMenusPromise = odoo.reloadMenus();
|
||||
// Prefetch translations to speedup webclient. This is done in JS because link rel="prefetch"
|
||||
// is not yet supported on safari.
|
||||
fetch(`/web/webclient/translations/${cache_hashes.translations}?lang=${user_context.lang}`);
|
||||
}
|
||||
</script>
|
||||
<t t-if="request.httprequest.cookies.get('color_scheme') == 'dark'">
|
||||
<t t-call-assets="web.dark_mode_assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.dark_mode_assets_backend" t-js="false"/>
|
||||
<t t-call-assets="web.assets_web_print" media="print" t-js="false"/>
|
||||
|
||||
<t t-if="request.cookies.get('color_scheme') == 'dark'">
|
||||
<t t-call-assets="web.assets_web_dark" media="screen"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-call-assets="web.assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-js="false"/>
|
||||
<t t-call-assets="web.assets_web" media="screen"/>
|
||||
</t>
|
||||
<t t-call-assets="web.assets_common" t-css="false"/>
|
||||
<t t-call-assets="web.assets_backend" t-css="false"/>
|
||||
<t t-call-assets="web.assets_backend_prod_only" t-css="false"/>
|
||||
<t t-call="web.conditional_assets_tests"/>
|
||||
<t t-call="web.conditional_assets_tests" media="screen"/>
|
||||
</t>
|
||||
<t t-set="head" t-value="head_web + (head or '')"/>
|
||||
<t t-set="head" t-value="head_web + (head or '')" media="screen"/>
|
||||
<t t-set="body_classname" t-value="'o_web_client'"/>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="webclient_offline">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="title">Offline</t>
|
||||
<t t-set="head">
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const cookies = document.cookie.split(';').map(c => c.trim());
|
||||
if (cookies.includes('color_scheme=dark')) {
|
||||
document.body.style.backgroundColor = "#262A36";
|
||||
document.body.style.color = "#FFFFFF";
|
||||
}
|
||||
});
|
||||
window.addEventListener('online', () => location.reload());
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Ubuntu, "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
padding:0;
|
||||
margin:0;
|
||||
background-color: #fff;
|
||||
color: rgb(17, 24, 39);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
user-select: none;
|
||||
}
|
||||
.card {
|
||||
width: 80%;
|
||||
}
|
||||
.card img {
|
||||
width: 96px;
|
||||
height: auto;
|
||||
filter: grayscale(.6);
|
||||
}
|
||||
.card button {
|
||||
background-color: #714B67;
|
||||
color: #FFFFFF;
|
||||
border: 1px solid #714B67;
|
||||
border-radius: .25rem;
|
||||
padding: .5rem 1rem;
|
||||
cursor: pointer;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
</style>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
</t>
|
||||
<div class="card">
|
||||
<img t-attf-src="data:image/png;base64,{{odoo_icon}}" alt="Odoo logo"/>
|
||||
<h1>You are offline</h1>
|
||||
<p>Check your network connection and come back here. Odoo will load as soon as you're back online.</p>
|
||||
<button onclick="location.reload()">Check again</button>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="webclient_scoped_app">
|
||||
<t t-call="web.layout">
|
||||
<t t-set="html_data" t-value="{'style': 'height: 100%;'}"/>
|
||||
<t t-set="title" t-value="'Install %s' % (app_name)"/>
|
||||
<t t-set="x_icon" t-value="'/scoped_app_icon_png?app_id=%s' % (app_id)" />
|
||||
<t t-set="head">
|
||||
<t t-call-assets="web.assets_frontend_minimal"/>
|
||||
<t t-call-assets="web.assets_frontend_lazy"/>
|
||||
<link rel="apple-touch-icon" t-att-href="x_icon"/>
|
||||
<link rel="manifest" t-att-href="safe_manifest_url" crossorigin="use-credentials" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
</t>
|
||||
<owl-component name="web.install_scoped_app" />
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue