[FIX] web, *: tours correctly break when there are missing deps
*: im_livechat, website_livechat, website_slides
In c989ff3, the odoo module system has been changed so that it now
errors out when modules are defined but have missing dependencies and
cannot run. Unfortunately, tours are defined in a single bundle,
`assets_tests`, and this bundle is used everywhere tours need to run,
but some of these tours depend on modules that only exist in the backend
and others on modules that only exist in the frontend. We don't want to
break up the `assets_tests` bundle as this creates a poor developer
experience, and so the solution that was chosen at the time is that when
the `assets_tests` bundle is defined, we ignore all module dependency
errors.
This causes a problem however, which is that if a module dependency is
missing in production code, the page will be broken by the module error
(which is expected) but if the `assets_tests` are present, which is the
case when running tours and tests, then it won't, meaning the tours will
happily pass despite the application being broken, which is
unacceptable.
This commit fixes this issue by replacing the assets_test bundle by a
new bundle (`__assets_tests_call__`) within which all module dependency
errors are ignored, which lets dependency errors that are hapenning in
other bundles (ie in production code) happen even during the tests.
Because of this, this commit also fixes the dependency errors that
already existed but were previously silent:
- for im_livechat and website_livechat, the code was refactored to use
the standard mechanism that we use elsewhere to add data directly in the
page: we store the data in __session_info__, and the module that exposes
that data is always present, instead of having a module that's defined
conditionally, which causes issues when non-conditional modules depend
on it.
- in web, the `report_assets_common` bundle was used alongside
`assets_common` but without `assets_frontend` or `assets_backend`.
Reports do not need any js and it appears that it already had what it
needed as far as css is concerned except for one fontawesome override.
Code was changed so that the js from the bundle is not included and it
reports no longer use `assets_common`, the js part of the bundle is no
longer used.
- in website_slides, the `slide_embed_assets` bundle is used alongside
`assets_common` without using `assets_frontend` or `assets_backend`
which is required for `assets_common` to function, the approach here was
to simply take the files from `assets_common` and remove the files that
were causing issues. This bundle should be trimmed at some point, as it
contains way too many things that it does not need.
The file colors.js was also moved to core, as it isn't graph specific
and was causing dependency issues with a field that was importing it.
Fields shouldn't depend on files in specific views' directory.
closes odoo/odoo#104794
Related: odoo/enterprise#33909
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit is contained in:
@@ -87,6 +87,7 @@ Help your customers with this chat, and analyse their feedback.
|
||||
],
|
||||
'im_livechat.assets_public_livechat': [
|
||||
('include', 'mail.assets_core_messaging'),
|
||||
'im_livechat/static/src/livechat_data.js',
|
||||
'im_livechat/static/src/legacy/models/*',
|
||||
'im_livechat/static/src/legacy/widgets/*',
|
||||
'im_livechat/static/src/legacy/widgets/*/*',
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/** @odoo-module */
|
||||
|
||||
import { session } from "@web/session";
|
||||
|
||||
const { isAvailable, serverUrl, options } = session.livechatData || {};
|
||||
export { isAvailable, serverUrl, options };
|
||||
@@ -1,7 +1,7 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { publicLivechatService } from '@im_livechat/services/public_livechat_service';
|
||||
import { isAvailable, options, serverUrl } from 'im_livechat.loaderData';
|
||||
import { isAvailable, options, serverUrl } from '@im_livechat/livechat_data';
|
||||
|
||||
import { messagingService } from '@mail/services/messaging_service';
|
||||
import { makeMessagingToLegacyEnv } from '@mail/utils/make_messaging_to_legacy_env';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
odoo.define('web.session', function (require) {
|
||||
|
||||
const Session = require('web.Session');
|
||||
const { serverUrl } = require('im_livechat.loaderData');
|
||||
const { serverUrl } = require('@im_livechat/livechat_data');
|
||||
|
||||
return new Session(undefined, serverUrl, { use_cors: true });
|
||||
});
|
||||
|
||||
@@ -81,23 +81,24 @@
|
||||
<template id="external_loader" name="Livechat : external_script field of livechat channel">
|
||||
<!-- css style -->
|
||||
<link t-attf-href="{{url}}/im_livechat/external_lib.css" rel="stylesheet"/>
|
||||
<!-- js of all the required lib (internal and external) -->
|
||||
<script t-attf-src="{{url}}/im_livechat/external_lib.js" type="text/javascript" />
|
||||
<!-- the loader -->
|
||||
<script t-attf-src="{{url}}/im_livechat/loader/{{channel_id}}" type="text/javascript"/>
|
||||
<!-- js of all the required lib (internal and external) -->
|
||||
<script t-attf-src="{{url}}/im_livechat/external_lib.js" type="text/javascript" />
|
||||
</template>
|
||||
|
||||
<!-- the js code to initialize the LiveSupport object -->
|
||||
<template id="loader" name="Livechat : Javascript appending the livechat button">
|
||||
<t t-translation="off">
|
||||
window.addEventListener('load', function () {
|
||||
odoo.define('im_livechat.loaderData', function() {
|
||||
return {
|
||||
isAvailable: <t t-out="'true' if info['available'] else 'false'"/>,
|
||||
serverUrl: "<t t-out="info['server_url']"/>",
|
||||
options: <t t-out="json.dumps(info.get('options', {}))"/>,
|
||||
};
|
||||
});
|
||||
if (!window.odoo) {
|
||||
window.odoo = {};
|
||||
}
|
||||
odoo.__session_info__ = Object.assign(odoo.__session_info__ || {}, {
|
||||
livechatData: {
|
||||
isAvailable: <t t-out="'true' if info['available'] else 'false'"/>,
|
||||
serverUrl: "<t t-out="info['server_url']"/>",
|
||||
options: <t t-out="json.dumps(info.get('options', {}))"/>,
|
||||
},
|
||||
});
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -2,13 +2,15 @@
|
||||
<odoo>
|
||||
<data>
|
||||
<template id="chatbot_test_script_page">
|
||||
<script>
|
||||
<t t-call="im_livechat.loader">
|
||||
<t t-set="info" t-value="{ 'available': True, 'options': { 'isTestChatbot': True, 'testChatbotChannelData': channel_data, 'testChatbotData': chatbot_data }, 'server_url': server_url }"/>
|
||||
</t>
|
||||
</script>
|
||||
<t t-call="web.frontend_layout">
|
||||
<t t-set="no_livechat" t-value="True"/>
|
||||
<t t-set="head">
|
||||
<script>
|
||||
<t t-call="im_livechat.loader">
|
||||
<t t-set="info" t-value="{ 'available': True, 'options': { 'isTestChatbot': True, 'testChatbotChannelData': channel_data, 'testChatbotData': chatbot_data }, 'server_url': server_url }"/>
|
||||
</t>
|
||||
</script>
|
||||
</t>
|
||||
<t t-set="title" t-value="chatbot_data['chatbot_name']"/>
|
||||
|
||||
<div id="wrap">
|
||||
|
||||
@@ -495,6 +495,7 @@ This module provides the core of the Odoo Web Client.
|
||||
|
||||
'base/static/src/css/description.css',
|
||||
'web/static/src/libs/fontawesome/css/font-awesome.css',
|
||||
'web/static/src/legacy/scss/fontawesome_overridden.scss',
|
||||
'web/static/lib/odoo_ui_icons/*',
|
||||
'web/static/fonts/fonts.scss',
|
||||
|
||||
@@ -504,11 +505,6 @@ This module provides the core of the Odoo Web Client.
|
||||
'web/static/src/webclient/actions/reports/layout_assets/layout_boxed.scss',
|
||||
'web/static/src/webclient/actions/reports/layout_assets/layout_clean.scss',
|
||||
'web/static/asset_styles_company_report.scss',
|
||||
|
||||
'web/static/src/legacy/js/services/session.js',
|
||||
'web/static/src/legacy/js/public/public_root.js',
|
||||
'web/static/src/legacy/js/public/public_root_instance.js',
|
||||
'web/static/src/legacy/js/public/public_widget.js',
|
||||
],
|
||||
'web.report_assets_pdf': [
|
||||
'web/static/src/webclient/actions/reports/reset.min.css',
|
||||
@@ -587,6 +583,11 @@ This module provides the core of the Odoo Web Client.
|
||||
# first called in web.
|
||||
'web/static/tests/legacy/helpers/test_utils_file.js'
|
||||
],
|
||||
'web.__assets_tests_call__': [
|
||||
'web/static/tests/ignore_missing_deps_start.js',
|
||||
('include', 'web.assets_tests'),
|
||||
'web/static/tests/ignore_missing_deps_stop.js',
|
||||
],
|
||||
# remove this bundle alongside the owl2 compatibility layer
|
||||
'web.tests_assets_common': [
|
||||
('include', 'web.assets_common'),
|
||||
|
||||
@@ -75,11 +75,10 @@
|
||||
return dep.to;
|
||||
});
|
||||
},
|
||||
getWaitedJobs: function () {
|
||||
return new Set(jobs.map((job) => job.name));
|
||||
},
|
||||
getMissingJobs() {
|
||||
const waited = this.getWaitedJobs();
|
||||
const waited = new Set(
|
||||
jobs.filter((job) => !job.ignoreMissingDeps).map((job) => job.name)
|
||||
);
|
||||
const missing = new Set();
|
||||
for (const job of waited) {
|
||||
for (const dep of this.getDependencies(job)) {
|
||||
@@ -228,6 +227,7 @@
|
||||
deps: deps,
|
||||
resolve: promiseResolve,
|
||||
promise: promise,
|
||||
ignoreMissingDeps: globalThis.__odooIgnoreMissingDependencies,
|
||||
});
|
||||
|
||||
deps.forEach(function (dep) {
|
||||
@@ -248,6 +248,9 @@
|
||||
var jobdep;
|
||||
|
||||
for (var k = 0; k < jobs.length; k++) {
|
||||
if (jobs[k].ignoreMissingDeps) {
|
||||
continue;
|
||||
}
|
||||
debugJobs[jobs[k].name] = job = {
|
||||
dependencies: jobs[k].deps,
|
||||
dependents: odoo.__DEBUG__.getDependents(jobs[k].name),
|
||||
@@ -345,12 +348,7 @@
|
||||
cycle,
|
||||
};
|
||||
odoo.__DEBUG__.jsModules = moduleInfo;
|
||||
// The assets_tests bundle contains a lot of module whose dependencies are in other bundles
|
||||
// that may or may not be loaded. This global is used to silence module loading errors when
|
||||
// this bundle is present
|
||||
if (!window.__odooIgnoreModuleErrors) {
|
||||
displayModuleErrors(moduleInfo);
|
||||
}
|
||||
displayModuleErrors(moduleInfo);
|
||||
|
||||
didLogInfoResolve(true);
|
||||
};
|
||||
@@ -454,7 +452,7 @@
|
||||
}
|
||||
const container = document.createElement("div");
|
||||
container.className =
|
||||
"position-fixed w-100 h-100 d-flex align-items-center flex-column bg-white overflow-auto";
|
||||
"position-fixed w-100 h-100 d-flex align-items-center flex-column bg-white overflow-auto modal";
|
||||
container.style.zIndex = "10000";
|
||||
const alert = document.createElement("div");
|
||||
alert.className = "alert alert-danger o_error_detail fw-bold m-auto";
|
||||
|
||||
+4
@@ -1,5 +1,9 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
/**
|
||||
* Lists of colors that contrast well with each other to be used in various
|
||||
* visualizations (eg. graphs/charts), both in bright and dark themes.
|
||||
*/
|
||||
const COLORS_BRIGHT = [
|
||||
"#1f77b4",
|
||||
"#ff7f0e",
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
import { loadJS } from "@web/core/assets";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { getColor, hexToRGBA } from "@web/views/graph/colors";
|
||||
import { getColor, hexToRGBA } from "@web/core/colors/colors";
|
||||
import { standardFieldProps } from "../standard_field_props";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { _lt } from "@web/core/l10n/translation";
|
||||
import { getBorderWhite, DEFAULT_BG, getColor, hexToRGBA } from "./colors";
|
||||
import { getBorderWhite, DEFAULT_BG, getColor, hexToRGBA } from "@web/core/colors/colors";
|
||||
import { formatFloat } from "@web/views/fields/formatters";
|
||||
import { SEP } from "./graph_model";
|
||||
import { sortBy } from "@web/core/utils/arrays";
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// This module has for sole purpose to mark all odoo modules defined between it
|
||||
// and ignore_missing_deps_stop as ignored for missing dependency errors.
|
||||
// see the template conditional_assets_tests to understand how it's used.
|
||||
window.__odooIgnoreMissingDependencies = true;
|
||||
@@ -0,0 +1 @@
|
||||
window.__odooIgnoreMissingDependencies = false;
|
||||
@@ -26,7 +26,7 @@ import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
|
||||
import { createWebClient, doAction } from "@web/../tests/webclient/helpers";
|
||||
import { browser } from "@web/core/browser/browser";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { getBorderWhite, DEFAULT_BG, getColors, hexToRGBA } from "@web/views/graph/colors";
|
||||
import { getBorderWhite, DEFAULT_BG, getColors, hexToRGBA } from "@web/core/colors/colors";
|
||||
import { GraphArchParser } from "@web/views/graph/graph_arch_parser";
|
||||
import { patchWithCleanup } from "../helpers/utils";
|
||||
import { fakeCookieService } from "@web/../tests/helpers/mock_services";
|
||||
|
||||
@@ -15,19 +15,6 @@
|
||||
<meta name="viewport" content="initial-scale=1"/>
|
||||
<title><t t-esc="title or 'Odoo Report'"/></title>
|
||||
<t t-call-assets="web.report_assets_common" t-js="false"/>
|
||||
<!--The following is kind of a hack-->
|
||||
<!--in an iframe, we don't want the session to perform qweb_templates rpc-->
|
||||
<script type="text/javascript">
|
||||
window.odoo = {};
|
||||
window.odoo.__session_info__ = {is_report: true};
|
||||
// Using web.assets_common without assets_frontend or assets_backend creates a lot
|
||||
// of module dependency errors. Either assets_common should be reworked to work
|
||||
// as a standalone bundle, or this template should not use it and add what it needs
|
||||
// from it into its own bundle. Silence these errors in the meantime
|
||||
window.__odooIgnoreModuleErrors = true;
|
||||
</script>
|
||||
<t t-call-assets="web.assets_common" t-css="false"/>
|
||||
<t t-call-assets="web.report_assets_common" t-css="false"/>
|
||||
</head>
|
||||
<body t-att-class="'container' if not full_width else 'container-fluid'">
|
||||
<div id="wrapwrap">
|
||||
@@ -51,15 +38,7 @@
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="initial-scale=1"/>
|
||||
<title><t t-esc="title or 'Odoo Report'"/></title>
|
||||
<script type="text/javascript">
|
||||
// Using web.assets_common without assets_frontend or assets_backend creates a lot
|
||||
// of module dependency errors. Either assets_common should be reworked to work
|
||||
// as a standalone bundle, or this template should not use it and add what it needs
|
||||
// from it into its own bundle. Silence these errors in the meantime
|
||||
window.__odooIgnoreModuleErrors = true;
|
||||
</script>
|
||||
<t t-call-assets="web.report_assets_common" t-js="false"/>
|
||||
<t t-call-assets="web.assets_common" t-css="false"/>
|
||||
<style>
|
||||
<t t-out="preview_css"/>
|
||||
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
<!-- 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-if="'tests' in debug or test_mode_enabled">
|
||||
<t t-call-assets="web.assets_tests" defer_load="True" />
|
||||
<!-- The assets_tests bundle contains a lot of module whose dependencies are in other bundles that may or may not be loaded. This global is used to silence module loading errors when this bundle is present -->
|
||||
<script>window.__odooIgnoreModuleErrors = true</script>
|
||||
<!-- 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>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Template registering all the assets required to execute the Livechat from a page containing Odoo
|
||||
-->
|
||||
<template id="loader" inherit_id="website.layout" name="Livechat : include loader on Website">
|
||||
<xpath expr="//div[@id='wrapwrap']" position="after">
|
||||
<xpath expr="//head">
|
||||
<t t-if="not no_livechat and website and website.channel_id">
|
||||
<script>
|
||||
<t t-call="im_livechat.loader">
|
||||
|
||||
@@ -121,6 +121,137 @@ Featuring
|
||||
'website_slides/static/tests/tours/*.js',
|
||||
],
|
||||
'website_slides.slide_embed_assets': [
|
||||
# TODO this bundle now includes 'assets_common' files directly, but
|
||||
# most of these files are useless in this context, clean this up.
|
||||
('include', 'web._assets_helpers'),
|
||||
|
||||
'web/static/src/scss/pre_variables.scss',
|
||||
'web/static/lib/bootstrap/scss/_variables.scss',
|
||||
|
||||
'web/static/src/legacy/scss/tempusdominus_overridden.scss',
|
||||
'web/static/lib/tempusdominus/tempusdominus.scss',
|
||||
'web/static/lib/jquery.ui/jquery-ui.css',
|
||||
'web/static/src/libs/fontawesome/css/font-awesome.css',
|
||||
'web/static/lib/odoo_ui_icons/*',
|
||||
'web/static/lib/select2/select2.css',
|
||||
'web/static/lib/select2-bootstrap-css/select2-bootstrap.css',
|
||||
'web/static/lib/daterangepicker/daterangepicker.css',
|
||||
'web/static/src/webclient/navbar/navbar.scss',
|
||||
'web/static/src/legacy/scss/ui.scss',
|
||||
'web/static/src/legacy/scss/mimetypes.scss',
|
||||
'web/static/src/legacy/scss/modal.scss',
|
||||
'web/static/src/legacy/scss/animation.scss',
|
||||
'web/static/src/legacy/scss/datepicker.scss',
|
||||
'web/static/src/legacy/scss/daterangepicker.scss',
|
||||
'web/static/src/legacy/scss/banner.scss',
|
||||
'web/static/src/legacy/scss/colorpicker.scss',
|
||||
'web/static/src/legacy/scss/popover.scss',
|
||||
'web/static/src/legacy/scss/translation_dialog.scss',
|
||||
'web/static/src/legacy/scss/keyboard.scss',
|
||||
'web/static/src/legacy/scss/name_and_signature.scss',
|
||||
'web/static/src/legacy/scss/web.zoomodoo.scss',
|
||||
'web/static/src/legacy/scss/fontawesome_overridden.scss',
|
||||
|
||||
'web/static/src/legacy/js/promise_extension.js',
|
||||
'web/static/src/boot.js',
|
||||
'web/static/src/session.js',
|
||||
'web/static/src/legacy/js/core/cookie_utils.js',
|
||||
|
||||
'web/static/lib/underscore/underscore.js',
|
||||
'web/static/lib/underscore.string/lib/underscore.string.js',
|
||||
'web/static/lib/moment/moment.js',
|
||||
'web/static/lib/luxon/luxon.js',
|
||||
'web/static/lib/owl/owl.js',
|
||||
'web/static/lib/owl/odoo_module.js',
|
||||
'web/static/src/owl2_compatibility/*.js',
|
||||
'web/static/src/legacy/js/component_extension.js',
|
||||
'web/static/src/legacy/legacy_component.js',
|
||||
'web/static/lib/jquery/jquery.js',
|
||||
'web/static/lib/jquery.ui/jquery-ui.js',
|
||||
'web/static/lib/jquery/jquery.browser.js',
|
||||
'web/static/lib/jquery.blockUI/jquery.blockUI.js',
|
||||
'web/static/lib/jquery.hotkeys/jquery.hotkeys.js',
|
||||
'web/static/lib/jquery.placeholder/jquery.placeholder.js',
|
||||
'web/static/lib/jquery.form/jquery.form.js',
|
||||
'web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js',
|
||||
'web/static/lib/jquery.mjs.nestedSortable/jquery.mjs.nestedSortable.js',
|
||||
'web/static/lib/popper/popper.js',
|
||||
'web/static/lib/bootstrap/js/dist/dom/data.js',
|
||||
'web/static/lib/bootstrap/js/dist/dom/event-handler.js',
|
||||
'web/static/lib/bootstrap/js/dist/dom/manipulator.js',
|
||||
'web/static/lib/bootstrap/js/dist/dom/selector-engine.js',
|
||||
'web/static/lib/bootstrap/js/dist/base-component.js',
|
||||
'web/static/lib/bootstrap/js/dist/alert.js',
|
||||
'web/static/lib/bootstrap/js/dist/button.js',
|
||||
'web/static/lib/bootstrap/js/dist/carousel.js',
|
||||
'web/static/lib/bootstrap/js/dist/collapse.js',
|
||||
'web/static/lib/bootstrap/js/dist/dropdown.js',
|
||||
'web/static/lib/bootstrap/js/dist/modal.js',
|
||||
'web/static/lib/bootstrap/js/dist/offcanvas.js',
|
||||
'web/static/lib/bootstrap/js/dist/tooltip.js',
|
||||
'web/static/lib/bootstrap/js/dist/popover.js',
|
||||
'web/static/lib/bootstrap/js/dist/scrollspy.js',
|
||||
'web/static/lib/bootstrap/js/dist/tab.js',
|
||||
'web/static/lib/bootstrap/js/dist/toast.js',
|
||||
'web/static/lib/tempusdominus/tempusdominus.js',
|
||||
'web/static/lib/select2/select2.js',
|
||||
'web/static/lib/clipboard/clipboard.js',
|
||||
'web/static/lib/jSignature/jSignatureCustom.js',
|
||||
'web/static/lib/qweb/qweb2.js',
|
||||
'web/static/src/legacy/js/assets.js',
|
||||
'web/static/src/legacy/js/libs/autocomplete.js',
|
||||
'web/static/src/legacy/js/libs/bootstrap.js',
|
||||
'web/static/src/legacy/js/libs/content-disposition.js',
|
||||
'web/static/src/legacy/js/libs/download.js',
|
||||
'web/static/src/legacy/js/libs/jquery.js',
|
||||
'web/static/src/legacy/js/libs/moment.js',
|
||||
'web/static/src/legacy/js/libs/underscore.js',
|
||||
'web/static/src/legacy/js/libs/pdfjs.js',
|
||||
'web/static/src/legacy/js/libs/zoomodoo.js',
|
||||
'web/static/src/legacy/js/libs/jSignatureCustom.js',
|
||||
'web/static/src/legacy/js/core/abstract_service.js',
|
||||
'web/static/src/legacy/js/core/abstract_storage_service.js',
|
||||
'web/static/src/legacy/js/core/ajax.js',
|
||||
'web/static/src/legacy/js/core/browser_detection.js',
|
||||
'web/static/src/legacy/js/core/bus.js',
|
||||
'web/static/src/legacy/js/core/class.js',
|
||||
'web/static/src/legacy/js/core/collections.js',
|
||||
'web/static/src/legacy/js/core/concurrency.js',
|
||||
'web/static/src/legacy/js/core/dialog.js',
|
||||
'web/static/src/legacy/xml/dialog.xml',
|
||||
'web/static/src/legacy/js/core/owl_dialog.js',
|
||||
'web/static/src/legacy/js/core/popover.js',
|
||||
'web/static/src/legacy/js/core/dom.js',
|
||||
'web/static/src/legacy/js/core/local_storage.js',
|
||||
'web/static/src/legacy/js/core/mixins.js',
|
||||
'web/static/src/legacy/js/core/qweb.js',
|
||||
'web/static/src/legacy/js/core/ram_storage.js',
|
||||
'web/static/src/legacy/js/core/registry.js',
|
||||
'web/static/src/legacy/js/core/rpc.js',
|
||||
'web/static/src/legacy/js/core/service_mixins.js',
|
||||
'web/static/src/legacy/js/core/session.js',
|
||||
'web/static/src/legacy/js/core/session_storage.js',
|
||||
'web/static/src/legacy/js/core/time.js',
|
||||
'web/static/src/legacy/js/core/translation.js',
|
||||
'web/static/src/legacy/js/core/utils.js',
|
||||
'web/static/src/legacy/js/core/widget.js',
|
||||
'web/static/src/legacy/js/services/ajax_service.js',
|
||||
'web/static/src/legacy/js/services/config.js',
|
||||
'web/static/src/legacy/js/services/core.js',
|
||||
'web/static/src/legacy/js/services/local_storage_service.js',
|
||||
'web/static/src/legacy/js/services/session_storage_service.js',
|
||||
'web/static/src/legacy/js/common_env.js',
|
||||
'web/static/src/legacy/js/widgets/name_and_signature.js',
|
||||
'web/static/src/legacy/xml/name_and_signature.xml',
|
||||
'web/static/src/legacy/js/core/smooth_scroll_on_drag.js',
|
||||
'web/static/src/legacy/js/widgets/colorpicker.js',
|
||||
'web/static/src/legacy/xml/colorpicker.xml',
|
||||
'web/static/src/legacy/js/widgets/translation_dialog.js',
|
||||
'web/static/src/legacy/xml/translation_dialog.xml',
|
||||
'web/static/src/core/**/*.js',
|
||||
'web/static/src/env.js',
|
||||
'web/static/src/legacy/js/services/session.js',
|
||||
|
||||
('include', 'web._assets_helpers'),
|
||||
'web/static/src/scss/pre_variables.scss',
|
||||
'web/static/lib/bootstrap/scss/_variables.scss',
|
||||
|
||||
@@ -10,14 +10,7 @@
|
||||
<head>
|
||||
<title><t t-esc="slide.name"/></title>
|
||||
<t t-call-assets="web.assets_common" t-js="false"/>
|
||||
<t t-call-assets="website_slides.slide_embed_assets" t-js="false"/>
|
||||
<!-- Using web.assets_common without assets_frontend or assets_backend creates a lot
|
||||
of module dependency errors. Either assets_common should be reworked to work
|
||||
as a standalone bundle, or this template should not use it and add what it needs
|
||||
from it into its own bundle. Silence these errors in the meantime -->
|
||||
<script>window.__odooIgnoreModuleErrors = true</script>
|
||||
<t t-call-assets="web.assets_common" t-css="false"/>
|
||||
<t t-call-assets="website_slides.slide_embed_assets" t-css="false"/>
|
||||
<t t-call-assets="website_slides.slide_embed_assets"/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="PDFViewer" class="o_wslides_fs_pdf_viewer d-flex flex-column h-100">
|
||||
|
||||
Reference in New Issue
Block a user