Compare commits

...

23 Commits

Author SHA1 Message Date
Gorash
28d090fd5f [IMP] qweb: document 't-cache' and 't-nocache' directives debug mode
related with: https://github.com/odoo/odoo/pull/88276
2022-06-27 15:46:19 +02:00
Antoine Vandevenne (anv)
4ff6271ad8 [FIX] odoo_theme: correctly test for fallback URLs when using switchers
closes odoo/documentation#2273

X-original-commit: 9e84b6f681
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-23 09:59:52 +02:00
Donatienne Pirlot
6655c0800e [IMP] accounting: new content for invoice digitization (ocr)
closes odoo/documentation#2261

Id: 2320188
X-original-commit: c8fd4608d4
Signed-off-by: Pirlot Donatienne (dopi) <dopi@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-06-21 20:21:25 +02:00
Antoine Vandevenne (anv)
d37c6c67bd [FIX] redirects: add missing redirect rule for external_api.rst
The redirect rule was omitted in commit 3465475f.

closes odoo/documentation#2256

X-original-commit: 060e8f2344
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-21 12:33:42 +02:00
“Chiara
187813cdbc [FW][IMP] accounting: remove the odoo tutorials invoices link
Deleting the Odoo Tutorials Invoices link since the course has been merged, and the link isn't necessary anymore.

closes odoo/documentation#2249

Forward-port-of: odoo/documentation#2243
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-06-20 18:56:45 +02:00
lma-odoo
ceed36b6f2 Update epos_ssc.rst
Because of a recent Chrome security update, a lot of customers using peripheral devices (printers, ...) will have to follow this doc.

Therefore, I followed the doc and did the flow on my side.

I modified 'Copy to file' to 'Export' and 'Trusted Root Certification Authorities' to 'Authorities' in order to have the exact same terms as in Chrome (I guess they updated their terms at some point).

closes odoo/documentation#2236

X-original-commit: 4c4b81b12c
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-06-16 13:16:55 +02:00
Elisabeth Dickinson
0d12103866 [FIX] odoo_theme: fix highlight blocks in field-list items
On pages such as /developer/reference/backend/orm.html#fields, the
highlight blocks inside `dl.field-list` items were pushing the width of
the page to go outside the screen on mobile. This is fixed by changing
the `.field-list`'s `display: grid` into `block` on mobile.

closes odoo/documentation#2229

X-original-commit: a689ea236d
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-15 19:05:00 +02:00
Odoo's Mergebot
359a71e83f [FW][MERGE] odoo_theme: revamp header and menu for better mobile support
Previously the switchers were hidden on mobile. These have been moved
to a sub-nav which also contains the button for the sidenav, leaving
more space for the searchbox so it can remain in the header. Like MDN
web docs, the navigation now slides in from the left instead of the
top.

See PR's commits for more details.

task-2800937

closes odoo/documentation#2221

Forward-port-of: odoo/documentation#2206
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-15 13:37:32 +02:00
Antoine Vandevenne (anv)
9f69d7d402 [FIX] odoo_theme: stop testing for valid URLs if in localhost
The mechanism that makes the version and language switchers test for
valid URLs crashed when testing in localhost. The mechanism is now
skipped if the URL starts with a '/'.

X-original-commit: 98e98f65c9
2022-06-15 11:46:06 +02:00
Elisabeth Dickinson
3780b0e135 [FIX] odoo_theme: fix searchbox's highlight-link
task-2800937

X-original-commit: 3fd32fe92a
2022-06-15 11:46:05 +02:00
Elisabeth Dickinson
886ba6150e [IMP] odoo_theme: revamp side menu to add overlay
task-2800937

X-original-commit: 4ed8c2238a
2022-06-15 11:46:04 +02:00
Elisabeth Dickinson
4d34066326 [FIX] odoo_theme: fix menu scrolling
task-2800937

X-original-commit: 9c53901db9
2022-06-15 11:46:03 +02:00
Elisabeth Dickinson
2836734afc [IMP] odoo_theme: add side menu collapse icon
task-2800937

X-original-commit: 7284b11a36
2022-06-15 11:46:02 +02:00
Elisabeth Dickinson
b03ce9947f [IMP] odoo_theme: change collapsing menu orientation
task-2800937

X-original-commit: dee96ad2da
2022-06-15 11:46:01 +02:00
Elisabeth Dickinson
bf1e7ee63e [IMP] odoo_theme: add subheader and adapt switchers and searchbar
task-2800937

X-original-commit: 411e1cb1d3
2022-06-15 11:46:00 +02:00
Elisabeth Dickinson
ddf9fe780e [IMP] odoo_theme: stop translating language names in the switcher
Before this commit, the language names were translated to display
"Français" instead of "French". This helped the user find their language
in the switcher but it was taking too much horizontal space, and that
space was not constant from one language to another.

This commit removes the translations of the language names and simply
goes with "FR", "NL", etc. which any user can identify as their
language.

task-2800937

X-original-commit: b1fa30f431
2022-06-15 11:45:59 +02:00
Elisabeth Dickinson
8a6e2e5d9f [IMP] design: add an icon behind external links
The external links' target attribute is now also updated to open the
link in a new tab. In addition, the "[source]" link of autodoc's models
is moved right next to the name of the model to correctly position the
icon.

task-2790244

closes odoo/documentation#2212

X-original-commit: 343decf192
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-14 14:54:06 +02:00
Elisabeth Dickinson
33c2ee98c8 [IMP] odoo_theme: show the "On this page" section in mobile
When the page gets too small for the "On this page" section (local tree
of content) to fit on the page, the section is now moved above the menu
(global tree of content) rather than being hidden.

task-2800970

closes odoo/documentation#2200

X-original-commit: c0040fa532
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-14 07:41:18 +02:00
LoredanaLrpz
1d01977ba5 [REM] pos: remove cash control doc page in 15 bc deprecated
Task ID: 2680699

closes odoo/documentation#2191

X-original-commit: c0036ae13c
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-13 09:34:06 +02:00
Julien Castiaux
7fdf0ffeb4 [IMP] rdtraining: tip about -i/-u for odoo-bin
It is never shown to the trainee that he can install/update a module
right from the CLI. Multiple developpers still use the app manager to
install/update their modules multiple months into the job.

closes odoo/documentation#2187

X-original-commit: 3d2f067e6c
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Julien Castiaux <juc@odoo.com>
2022-06-10 21:50:51 +02:00
Antoine Vandevenne (anv)
1a57545ff3 [FIX] requirements: pin docutils to 0.16.0
Since sphinx-tabs 3.2.0 has the requirement docutils==0.16.0 and sphinx
3.5.4 has the requirement docutils>=0.12,<0.17, this commit pins
docutils to version 0.16.0.

While we're at it, the dependency to sphinx-tabs is also explicitly
listed, although it was already imported in the extensions. It causes
no trouble to install it from pip alongside the imported extension.

closes odoo/documentation#2177

X-original-commit: 9d36e4e2a4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-10 15:44:04 +02:00
Denis Vermylen
2a4e3cb788 [FIX] odoo.sh: remove hidden folder from documentation
it will also be renamed to .repositories in the near future

closes odoo/documentation#2165

X-original-commit: 1afee9e2c7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-08 09:48:31 +02:00
Antoine Vandevenne (anv)
9b3a941753 [REL] freeze saas-15.4 branch
closes odoo/documentation#2130

Related: odoo/odoo#92735
Related: odoo/design-themes#565
Related: odoo/enterprise#27971
2022-06-07 18:12:13 +02:00
45 changed files with 473 additions and 406 deletions

View File

@@ -26,7 +26,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-15.4
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)

View File

@@ -4,11 +4,11 @@
### Requirements
- [Git](https://www.odoo.com/documentation/master/contributing/documentation.html#install-git)
- [Python 3.7 or 3.8](https://www.odoo.com/documentation/master/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/master/requirements.txt).
- [Make](https://www.odoo.com/documentation/master/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in master](https://github.com/odoo/odoo/tree/master) (Optional)
- [Git](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#install-git)
- [Python 3.7 or 3.8](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/saas-15.4/requirements.txt).
- [Make](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in saas-15.4](https://github.com/odoo/odoo/tree/saas-15.4) (Optional)
### Instructions
@@ -23,7 +23,7 @@
2. Open the file `documentation/_build/html/index.html` in your web browser to display the render.
3. See [this guide](https://www.odoo.com/documentation/master/contributing/documentation.html#preview-your-changes)
3. See [this guide](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#preview-your-changes)
for more detailed instructions.
Optional: to fully build the developer documentation with inline docstrings for documented Python
@@ -34,7 +34,7 @@ be shown.
## Contribute to the documentation
For contributions to the content of the documentation, please refer to the
[Introduction Guide](https://www.odoo.com/documentation/master/contributing/documentation.html).
[Introduction Guide](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html).
To **report a content issue**, **request new content** or **ask a question**, use the
[repository's issue tracker](https://github.com/odoo/documentation-user/issues) as usual.

20
conf.py
View File

@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
# `version` if the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = 'saas-15.4'
# The minimal Sphinx version required to build the documentation.
needs_sphinx = '3.0.0'
@@ -184,6 +184,8 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'saas-15.4': "Odoo Online",
'saas-15.3': "Odoo Online",
'saas-15.2': "Odoo Online",
'saas-15.1': "Odoo Online",
'15.0': "Odoo 15",
@@ -194,14 +196,14 @@ versions_names = {
# The language names that should be shown in the language switcher, if the config option `languages`
# is populated. If a language is passed to `languages` but is not listed here, it will not be shown.
languages_names = {
'de': 'Deutsch',
'en': 'English',
'es': 'Español',
'fr': 'Français',
'nl': 'Nederlands',
'pt_BR': 'Português (BR)',
'uk': 'українська',
'zh_CN': '简体中文',
'de': 'DE',
'en': 'EN',
'es': 'ES',
'fr': 'FR',
'nl': 'NL',
'pt_BR': 'PT',
'uk': 'UA',
'zh_CN': 'ZH',
}
# The specifications of redirect rules used by the redirects extension.

View File

@@ -37,7 +37,6 @@ The working directory is composed of the following folders:
│ │ ├── enterprise Odoo Enterprise source code
│ │ ├── themes Odoo Themes source code
│ │ └── user Your repository branch source code
│ ├── repositories The Git repositories used by your project
│ ├── data
│ │ ├── filestore database attachments, as well as the files of binary fields
│ │ └── sessions visitors and users sessions

View File

@@ -15,7 +15,6 @@ development with features such as AI-powered invoice recognition, synchronizatio
accounts, smart matching suggestions, etc.
.. seealso::
- `Odoo Tutorials: Invoicing <https://www.odoo.com/slides/invoicing-18>`_
- `Odoo Tutorials: Accounting <https://www.odoo.com/slides/accounting-19>`_
- :doc:`Accounting Cheat Sheet <accounting/getting_started/memento>`

View File

@@ -11,4 +11,4 @@ Vendor bills
supplier_bills/purchase_receipts
supplier_bills/deferred_expenses
supplier_bills/assets
supplier_bills/ocr
supplier_bills/invoice_digitization

View File

@@ -0,0 +1,78 @@
=============================================================
Invoice digitization with optical character recognition (OCR)
=============================================================
**Invoice digitization** is the process of automatically encoding traditional paper invoices into
vendor bills and customer invoices forms in your accounting.
Odoo uses :abbr:`OCR (optical character recognition)` and artificial intelligence technologies to
recognize the content of the documents. Vendor bills and customer invoices forms are automatically
created and populated based on the scanned invoices.
.. seealso::
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
- :doc:`/applications/general/in_app_purchase`.
- `Odoo Tutorials: Invoice Digitization with OCR
<https://www.odoo.com/slides/slide/digitize-bills-with-ocr-1712>`_.
.. note::
- The more documents you scan, the better the system identifies the correct data.
Configuration
=============
In :menuselection:`Accounting --> Configuration --> Settings --> Digitalization`, check the box
:guilabel:`Document Digitalization` and choose whether :guilabel:`Vendor Bills` and
:guilabel:`Customer Invoices` should be processed automatically or manually.
The :guilabel:`Single Invoice Line Per Tax` option can also be selected. It enables to get only one
line created per tax in the new bill, regardless of the number of lines from the invoice.
Invoice upload
==============
Upload invoices manually
------------------------
From the :guilabel:`Accounting Dashboard`, click on the :guilabel:`Upload` button of your vendor
bills journal.
Alternatively, go to :menuselection:`Accounting --> Customers --> Invoices` or
:menuselection:`Accounting --> Vendors --> Bills` and select :guilabel:`Upload`.
Upload invoices using an email alias
------------------------------------
You can configure your connected scanner to send scanned documents to an email alias. Emails sent to
these aliases are converted into new draft customer invoices or vendor bills.
You can modify the email alias of a journal by going to :menuselection:`Accounting --> Configuration
--> Journals`, opening the appropriate journal, opening the :guilabel:`Advanced Settings` tab, and
modifying the :guilabel:`Email Alias` field.
If you use the :doc:`Documents <../../../documents>` app, you can send your scanned invoices to the
:guilabel:`Finance` workspace (e.g., `inbox-financial@example.odoo.com`).
Invoice digitization
====================
According to your settings, the document is either processed automatically, or you need to click on
:guilabel:`Send for digitalization` to do it manually.
Once the data is extracted from the PDF, you can correct it if necessary by clicking on the
respective tags (available in Edit mode) and selecting the proper information instead.
Pricing
=======
| The **invoice digitization** is an In-App Purchase (IAP) service that requires prepaid credits to
work. Digitizing one document consumes one credit.
| To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings --> Digitization`
and click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> Odoo IAP` and click on
:guilabel:`View My Services`.
.. important::
- If you are on Odoo Online (SaaS) and have the Enterprise version, you benefit from free trial
credits to test the feature.
.. seealso::
- `Our Privacy Policy <https://iap.odoo.com/privacy#header_6>`_.

View File

@@ -1,56 +0,0 @@
==============================================================
Digitize vendor bills with optical character recognition (OCR)
==============================================================
Encoding bills manually can be a time-consuming task. Having a solution that allows you to digitize
them and automatically import the data into your database reduces errors and saves you time.
.. important::
`Try it out <https://www.odoo.com/app/invoice-automation>`_! Upload one of your Bills or try one of our samples.
Set up the feature
==================
Go to :menuselection:`Accounting --> Settings --> Bill Digitalization`, and choose whether the bills
should be processed automatically (with OCR) or manually (on demand).
.. image:: ocr/setup_ocr.png
:align: center
:alt: Activate the feature going to the settings application in Odoo Accounting
Start digitizing your bills
---------------------------
Scan your bills and then go to :menuselection:`Accounting --> Vendors --> Bills` and upload your
document. Based on your configuration, it either processes the documents automatically, or you
need to click on *Send for Digitalization* to do it manually.
.. tip::
You can also create a vendor bill through the *Documents* app or by using an email alias on your
journals.
Once the data is extracted from the PDF, you can correct it if necessary by clicking on the
respective tag (available in *Edit* mode), and selecting the right information instead.
.. image:: ocr/example_ocr.png
:align: center
:height: 580
:alt: Example of a scanned bill in Odoo Accounting
.. note::
The more bills you scan, the better the system gets at identifying the correct data.
Pricing
=======
| The *Bill Digitalization* is an *In-App Purchase (IAP)* service which requires prepaid credits to
work. Digitizing one document consumes one credit.
| To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings --> Bill
Digitalization` and click on *Buy credits*, or go to :menuselection:`Settings --> Odoo IAP` and
click on *View My Services*.
.. important::
- If you are on Odoo Online (SAAS) and have the Enterprise version, you benefit from free trial
credits to test the feature.
.. seealso::
- Our `Privacy Policy <https://iap.odoo.com/privacy#header_6>`_.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -145,5 +145,18 @@ It remains possible to resequence the invoices but with some restrictions:
#. The feature does not work if the sequence is inconsistent with the month of the entry.
#. It does not work if the sequence leads to a duplicate.
#. The order of the invoice remains unchanged.
#. It is useful for people who use a numbering from another software and who want to continue the
#. It is useful for people who use a numbering from another software and who want to continue the
current year without starting over from the beginning.
Invoice digitization with optical character recognition (OCR)
---------------------------------------------------------------
**Invoice digitization** is the process of automatically encoding traditional paper invoices into
invoices forms in your accounting.
Odoo uses OCR and artificial intelligence technologies to recognize the content of the documents.
Vendor bills and customer invoices forms are automatically created and populated based on scanned
invoices.
.. seealso::
- :doc:`/applications/finance/accounting/payables/supplier_bills/invoice_digitization`

View File

@@ -68,8 +68,7 @@ Click on :menuselection:`Connection is not secure --> Certificate is not valid`.
:align: center
:alt: The web browser indicates that the connection to the printer is not secure.
Go to the *Details* tab and click on **Copy to file**.
Select X.509 in base 64 and save it.
Go to the :guilabel:`Details` tab and click on :guilabel:`Export` Select X.509 in base 64 and save it.
Import the Self-signed certificate to Windows (Using Chrome)
============================================================
@@ -77,7 +76,7 @@ Import the Self-signed certificate to Windows (Using Chrome)
In your Chrome browser, go to :menuselection:`Settings --> Privacy and security --> Security -->
Manage certificates`
Go to the *Trusted Root Certification Authorities* tab and click on **Import** and select
Go to the :guilabel:`Authorities` tab and click on :guilabel:`Import` and select
your previous file. Accept all warnings and restart your browser.
Import the Self-signed certificate to your Android device

View File

@@ -8,7 +8,6 @@ Shop Features
:titlesonly:
shop/invoice
shop/cash_control
shop/barcode
shop/multicashiers
shop/reprint

View File

@@ -1,63 +0,0 @@
====================================
Set-up Cash Control in Point of Sale
====================================
Cash control allows you to check the amount of the cashbox at the
opening and closing. You can thus make sure no error has been made and
that no cash is missing.
Activate Cash Control
=====================
To activate the *Cash Control* feature, go to :menuselection:`Point
of Sales --> Configuration --> Point of sale` and select your PoS
interface.
Under the payments category, you will find the cash control setting.
.. image:: cash_control/cash_control01.png
:align: center
In this example, you can see I want to have 275$ in various denomination
at the opening and closing.
When clicking on **Opening/Closing Values** you will be able to create
those values.
.. image:: cash_control/cash_control02.png
:align: center
Start a session
===============
You now have a new button added when you open a session, *Set opening
Balance*
.. image:: cash_control/cash_control03.png
:align: center
.. image:: cash_control/cash_control04.png
:align: center
By default it will use the values you added before, but you can always
modify it.
Close a session
===============
When you want to close your session, you now have a *Set Closing
Balance* button as well.
You can then see the theoretical balance, the real closing balance (what
you have just counted) and the difference between the two.
.. image:: cash_control/cash_control05.png
:align: center
If you use the *Take Money Out* option to take out your transactions
for this session, you now have a zero-sum difference and the same
closing balance as your opening balance. You cashbox is ready for the
next session.
.. image:: cash_control/cash_control06.png
:align: center

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -220,7 +220,8 @@ Python comes with its own package manager: `pip
a single command.
#. Download and install the recommended release (`see README file
<https://github.com/odoo/documentation/tree/master/README.md>`_) of **Python 3** on your machine.
<https://github.com/odoo/documentation/tree/saas-15.4/README.md>`_) of **Python 3** on your
machine.
#. Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside
Python).
#. Execute the following commands in a terminal to verify that both installations finished

View File

@@ -276,17 +276,22 @@ The last two can be used to prevent the worker from being killed when debugging
.. tip:: You may face an error similar to `AttributeError: module '$MODULE_NAME' has no attribute '$ATTRIBUTE'`
In this case you may need to re-install the module with `$ pip install --upgrade --force-reinstall $MODULE_NAME`
In this case you may need to re-install the module with `$ pip install --upgrade --force-reinstall $MODULE_NAME`
If this error occurs with more than one module then you may need to re-install all the
requirements with `$ pip3 install --upgrade --force-reinstall -r requirements.txt`
If this error occurs with more than one module then you may need to re-install all the
requirements with `$ pip3 install --upgrade --force-reinstall -r requirements.txt`
You can also clear the python cache to solve the issue
You can also clear the python cache to solve the issue
.. code-block:: console
.. code-block:: console
$ cd $HOME/.local/lib/python3.8/site-packages/
$ find -name '*.pyc' -type f -delete
$ cd $HOME/.local/lib/python3.8/site-packages/
$ find -name '*.pyc' -type f -delete
.. tip:: Other commonly used arguments are:
* :option:`-i <odoo-bin --init>`: install some modules before running the server (comma separated list)
* :option:`-u <odoo-bin --update>`: update some modules before running the server (comma separated list)
Log in to Odoo

View File

@@ -18,7 +18,7 @@ Data Files (CSV)
Odoo is a highly data driven system. Although behavior is customized using Python code, part of a
module's value is in the data it sets up when loaded. One way to load data is through a CSV
file. One example is the
`list of country states <https://github.com/odoo/odoo/blob/master/odoo/addons/base/data/res.country.state.csv>`__
`list of country states <https://github.com/odoo/odoo/blob/saas-15.4/odoo/addons/base/data/res.country.state.csv>`__
which is loaded at installation of the ``base`` module.
.. code-block:: text

View File

@@ -599,7 +599,7 @@ Javascript
#. Add any step you want.
Every step contains at least a trigger. You can either use the `predefined steps
<https://github.com/odoo/odoo/blob/master/addons/web_tour/static/src/js/tour_step_utils.js>`_ or write
<https://github.com/odoo/odoo/blob/saas-15.4/addons/web_tour/static/src/js/tour_step_utils.js>`_ or write
your own personalized step.
Here are some example of steps:

View File

@@ -606,9 +606,10 @@ for two main purposes:
- provide some additional tools to help developer debug the Odoo interface.
The `debug` mode is described by a string. An empty string means that the `debug`
mode is not active. Otherwise, it is active. If the string contains `assets` or
`tests`, then the corresponding specific sub modes are activated (see below). Both
modes can be active at the same time, for example with the string `assets,tests`.
mode is not active. Otherwise, it is active. If the string contains `assets`,
`disable-t-cache` or `tests`, then the corresponding specific sub modes are
activated (see below). Both modes can be active at the same time, for example
with the string `assets,tests`.
The `debug` mode current value can be read in the :ref:`environment<frontend/framework/environment>`:
`env.debug`.
@@ -635,6 +636,16 @@ The `debug=assets` sub mode is useful to debug javascript code: once activated,
the :ref:`assets<reference/assets>` bundles are no longer minified, and source-maps
are generated as well. This makes it useful to debug all kind of javascript code.
.. _frontend/framework/t_cache_debug_mode:
Disable `t-cache`
-----------------
The `debug=disable-t-cache` sub mode is useful to debug python `t-cache` and
`t-nocache` directives. By activating this debugging mode, the contents of the
`t-cache` directives will be rendered each time. It is therefore possible to
compare the real time rendering with that which is cached.
.. _frontend/framework/tests_debug_mode:
Tests mode

View File

@@ -684,9 +684,9 @@ Will render (counter = 1)::
<footer>(views: 10)</footer>
</section>
Here the ``<i>`` tag that contains the container will always be rendered. While
the rest is as a single string in the cache. The counter is not updated by the
``t-set`` out of the ``t-nocache``
Here the ``<header>`` and ``<i>`` tags will always be rendered. While the rest
is as a single string in the cache. The counter is not updated by the ``t-set``
out of the ``t-nocache``
``t-nocache-*`` add some primitive values in the cache
'''''''''''''''''''''''''''''''''''''''''''''''''''''''
@@ -713,6 +713,10 @@ Example::
The value ``cached_value`` is cached with the cached template part of
``t-cache="records"`` and add to the scoped root values each time.
.. seealso::
- :ref:`Debug mode <frontend/framework/t_cache_debug_mode>`
Helpers
-------

View File

@@ -62,16 +62,22 @@
</nav>
</noscript>
{# Shown when the JS has properly set all the classes on the TOC elements #}
<nav id="o_main_toctree" class="o_side_nav border-end" hidden>
{%- include "layout_templates/menu.html" %}
<nav id="o_menu" class="o_side_nav">
<div class="o_mobile-overlay" data-bs-toggle="collapse" data-bs-target="#o_menu"></div>
<div class="o_side_nav-inner border-end">
{%- if 'hide-page-toc' not in meta %}
{# Shown when the JS has properly set all the classes on the TOC elements #}
<aside id="o_page_toc_in_nav" class="o_page_toc o_in_nav_toc border-bottom pt-3 pb-3" hidden>
{%- include "layout_templates/page_toc.html" %}
</aside>
{%- endif %}
<div id="o_main_toctree" class="o_main_toc mt-3" hidden>
{%- include "layout_templates/menu.html" %}
</div>
</div>
</nav>
<header class="o_main_header border-bottom navbar navbar-light navbar-expand-lg">
<header class="o_headers">
{%- include "layout_templates/header.html" %}
<button class="navbar-toggler p-0 border-0" type="button" data-bs-toggle="collapse" data-bs-target="#o_main_toctree" aria-label="Toggle navigation">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</header>
{%- endblock %}

View File

@@ -1,12 +1,23 @@
<div class="o_logo_wrapper">
<div class="o_main_header border-bottom d-flex align-items-center">
<div class="o_logo_wrapper">
<a href="{{ pathto(master_doc) }}" class="o_logo">
<img src="{{ pathto('_static/img/logos/odoo_logo.svg', 1) }}" height="20" alt="Odoo"/>
<span>docs</span>
</a>
</div>
<div class="d-flex flex-grow-1">
{%- include "layout_templates/searchbox.html" %}
<a class="btn btn-primary fw_semibold ms-auto d-none d-lg-inline-block" href="https://odoo.com/trial">{{ _('Try Odoo for FREE') }}</a>
</div>
</div>
{%- include "layout_templates/searchbox.html" %}
<div class="d-none d-lg-flex ms-auto">
{%- include "layout_templates/language_switcher.html" %}
{%- include "layout_templates/version_switcher.html" %}
<a class="btn btn-primary fw_semibold" href="https://odoo.com/trial">{{ _('Try Odoo for FREE') }}</a>
<div class="o_subheader border-bottom d-flex">
<div class="o_side_nav_toggler_wrapper border-end d-flex d-lg-none">
<button class="h-100 border-0" type="button" data-bs-toggle="collapse" data-bs-target="#o_menu" aria-label="Toggle navigation">
<i class="i-sidepanel"></i>
</button>
</div>
<div class="d-flex justify-content-end ms-auto">
{%- include "layout_templates/language_switcher.html" %}
{%- include "layout_templates/version_switcher.html" %}
</div>
</div>

View File

@@ -1,13 +1,13 @@
<div class="o_languages me-3">
<div class="o_languages">
<div class="dropdown">
{%- if alternate_languages|length > 0 %}
<button class="btn border dropdown-toggle"
<button class="btn btn-sm dropdown-toggle"
id="languages"
data-bs-toggle="dropdown">
{{ language }} {# The current language #}
</button>
{%- else %}
<button class="btn border dropdown-toggle"
<button class="btn btn-sm dropdown-toggle"
id="languages"
disabled="">
{{ language }} {# The current language #}

View File

@@ -1,5 +1,5 @@
{# NOTE: the 'searchbox' id is used to hook the "Hide Search Matches" button #}
<div id="searchbox" class="o_search_wrapper pe-lg-2" role="search">
<div id="searchbox" class="o_search_wrapper d-flex flex-grow-1" role="search">
<form class="o_search" action="{{ pathto('search') }}" method="get">
<input type="text" name="q" id="q" class="form-control rounded-pill" placeholder="What are you looking for?">
<input type="hidden" name="area" value="default">

View File

@@ -1,27 +1,22 @@
<div class="o_versions row gx-2 me-3">
<div class="col align-self-center">
<label class="fw_bold small ms-2">Version</label>
</div>
<div class="col">
<div class="dropdown">
{%- if alternate_versions|length > 0 %}
<button class="btn border dropdown-toggle"
id="versions"
data-bs-toggle="dropdown">
{{ version_display_name }} {# The current version #}
</button>
{%- else %}
<button class="btn border dropdown-toggle"
id="versions"
disabled="">
{{ version_display_name }} {# The current version #}
</button>
{%- endif %}
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="versions">
{%- for alternate_version, url in alternate_versions %}
<li><a class="dropdown-item" href="{{ url }}">{{ alternate_version }}</a></li>
{%- endfor %}
</ul>
</div>
<div class="o_versions row">
<div class="dropdown">
{%- if alternate_versions|length > 0 %}
<button class="btn btn-sm dropdown-toggle"
id="versions"
data-bs-toggle="dropdown">
{{ version_display_name }} {# The current version #}
</button>
{%- else %}
<button class="btn btn-sm dropdown-toggle"
id="versions"
disabled="">
{{ version_display_name }} {# The current version #}
</button>
{%- endif %}
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="versions">
{%- for alternate_version, url in alternate_versions %}
<li><a class="dropdown-item" href="{{ url }}">{{ alternate_version }}</a></li>
{%- endfor %}
</ul>
</div>
</div>

View File

@@ -71,6 +71,8 @@
<glyph unicode="&#xe93d;" glyph-name="translate" d="M1015.125 501.931c-6.245 20.5-19.316 37.337-36.513 48.261l-0.351 0.209c11.45 26.665 18.109 57.701 18.109 90.291 0 1.017-0.006 2.033-0.019 3.047l0.002-0.154c-2.675 174.017-144.368 314.057-318.77 314.057-171.16 0-310.817-134.882-318.475-304.152l-0.025-0.689c-5.203 0.325-11.284 0.51-17.408 0.51s-12.205-0.185-18.238-0.55l0.83 0.040c-0.412 0.002-0.9 0.003-1.387 0.003-174.187 0-315.641-140.145-317.757-313.829l-0.002-0.2c0-0.053 0-0.116 0-0.18 0-76.087 27.208-145.819 72.426-199.998l-0.404 0.498c-4.437-8.192-9.557-15.701-14.677-23.552l-5.803-8.875-3.413-3.072c-9.724-7.694-15.906-19.494-15.906-32.738 0-1.453 0.074-2.889 0.22-4.304l-0.015 0.178c2.308-12.286 10.394-22.288 21.27-27.212l0.234-0.095c8.786-3.545 18.975-5.602 29.644-5.602 4.842 0 9.585 0.424 14.194 1.236l-0.489-0.071c29.712 1.725 57.287 9.223 82.167 21.382l-1.271-0.561c41.713-20.681 90.834-32.781 142.781-32.781 56.444 0 109.552 14.286 155.904 39.44l-1.725-0.856c10.402 5.448 17.378 16.168 17.378 28.516 0 17.72-14.365 32.085-32.085 32.085-5.895 0-11.418-1.59-16.165-4.364l0.152 0.082c-35.749-19.046-78.179-30.231-123.221-30.231s-87.472 11.185-124.663 30.929l1.442-0.698c-5.766 2.592-12.499 4.101-19.584 4.101-9.422 0-18.22-2.67-25.68-7.294l0.209 0.12c-7.18-3.628-15.67-6.994-24.482-9.613l-1.118-0.285 4.096 9.216c2.731 5.12 8.192 21.163 8.192 21.163 0.9 2.774 1.418 5.966 1.418 9.279 0 8.829-3.684 16.798-9.599 22.454l-0.012 0.011c-42.118 44.397-68.080 104.482-68.267 170.629v0.037c0.575 139.629 113.899 252.598 253.609 252.598 0.841 0 1.681-0.004 2.52-0.012l-0.128 0.001c14.202-0.131 28.013-1.367 41.477-3.627l-1.541 0.214c11.249-58.161 37.136-108.996 73.67-150.17l-0.283 0.325h-94.208v29.355c0 17.72-14.365 32.085-32.085 32.085s-32.085-14.365-32.085-32.085v0-29.355h-108.544c-0.991 0.109-2.141 0.171-3.305 0.171-17.72 0-32.085-14.365-32.085-32.085s14.365-32.085 32.085-32.085c1.164 0 2.314 0.062 3.446 0.183l-0.141-0.012h197.632c-12.626-32.539-31.833-60.082-56.139-82.1l-0.181-0.161c-10.306 12.265-19.599 26.025-27.375 40.712l-0.614 1.272c-5.707 9.406-15.892 15.594-27.523 15.594-17.72 0-32.085-14.365-32.085-32.085 0-4.264 0.832-8.333 2.341-12.055l-0.077 0.215c10.784-20.637 22.685-38.424 36.25-54.78l-0.41 0.508c-11.758-8.647-25.151-17.131-39.118-24.689l-1.842-0.911c-9.899-6.094-16.399-16.87-16.399-29.165 0-5.143 1.138-10.021 3.175-14.395l-0.088 0.21c5.412-10.222 15.98-17.067 28.147-17.067 0.064 0 0.129 0 0.193 0.001h-0.010c5.498 0.092 10.654 1.47 15.207 3.844l-0.189-0.090c22.122 12.315 40.859 24.515 58.708 37.838l-1.364-0.974c19.414-15.792 42.076-28.547 66.71-37.078l1.556-0.469c1.436-0.238 3.092-0.374 4.779-0.374s3.342 0.136 4.955 0.398l-0.177-0.024c17.398 0.415 31.343 14.618 31.343 32.077 0 14.034-9.010 25.963-21.56 30.319l-0.225 0.068c-14.706 4.894-27.478 11.375-39.065 19.44l0.494-0.325c36.018 32.678 62.307 75.477 74.39 123.899l0.362 1.711h18.773c14.024 0.107 25.875 9.291 29.974 21.962l0.063 0.225c46.017-36.536 103.332-60.747 165.958-66.8l1.295-0.101-112.64-202.411c-2.528-4.424-4.018-9.723-4.018-15.37 0-2.171 0.22-4.29 0.64-6.337l-0.035 0.202 22.187-122.539c3.405-17.68 14.402-32.266 29.392-40.466l0.304-0.153c7.922-4.223 17.311-6.739 27.279-6.826h0.027c8.275 0.038 16.131 1.793 23.243 4.926l-0.374-0.147 116.395 48.811c6.345 3.002 11.475 7.693 14.932 13.497l0.086 0.157 241.323 431.104c7.243 12.276 11.522 27.049 11.522 42.822 0 8.833-1.342 17.353-3.834 25.367l0.162-0.605zM942.080 498.517c5.631-2.987 9.818-8.065 11.565-14.172l0.040-0.164c0.591-2.008 0.932-4.316 0.932-6.703 0-4.299-1.104-8.341-3.044-11.856l0.064 0.127-15.019-26.965-115.712 64.171 14.677 26.283c4.367 7.225 12.18 11.98 21.103 11.98 4.138 0 8.037-1.023 11.458-2.829l-0.134 0.064zM677.547 392.704c-0.408-0.002-0.891-0.004-1.374-0.004-139.347 0-252.445 112.383-253.602 251.457l-0.001 0.11c0 140.819 114.157 254.976 254.976 254.976s254.976-114.157 254.976-254.976v0c0.003-0.349 0.004-0.762 0.004-1.175 0-21.885-4.007-42.835-11.328-62.154l0.401 1.207-23.552 12.629c-11.902 6.435-26.053 10.217-41.087 10.217-22.233 0-42.535-8.271-57.996-21.905l0.096 0.083-98.987 216.405c-5.157 11.114-16.19 18.699-29.004 18.773h-0.010c-12.994-0.108-24.117-8.007-28.935-19.249l-0.079-0.207-95.915-227.328c-1.586-3.672-2.509-7.947-2.509-12.438 0-13.202 7.974-24.542 19.368-29.466l0.208-0.080c3.717-1.512 8.029-2.389 12.546-2.389 0.029 0 0.058 0 0.088 0h-0.005c0.025 0 0.055 0 0.085 0 13.095 0 24.339 7.93 29.19 19.249l0.079 0.207 15.019 37.888h108.203l17.408-37.888c3.231-7.397 9.165-13.11 16.523-15.973l0.202-0.069-77.824-138.581c-2.105 0.366-4.578 0.611-7.095 0.681l-0.073 0.002zM699.051 648.021h-50.517l24.917 58.709zM714.069 44.203l-97.621-41.643-19.115 102.4 192.171 341.333 115.712-63.829z" />
<glyph unicode="&#xe93e;" glyph-name="tutorial" d="M149.504 243.2s198.656 23.552 290.475-77.483c3.413-10.581 9.216-12.288 19.797-15.36 1.334-0.237 2.87-0.372 4.437-0.372s3.103 0.135 4.596 0.395l-0.159-0.023c9.98 0.312 18.839 4.862 24.879 11.901l0.038 0.046c3.357 3.943 5.761 8.797 6.795 14.141l0.032 0.195c0.335 1.796 0.527 3.862 0.527 5.973s-0.192 4.177-0.558 6.182l0.032-0.209v74.752c0 17.72-14.365 32.085-32.085 32.085v0c-0.001 0-0.001 0-0.002 0-17.6 0-31.891-14.171-32.083-31.726v-10.258c-65.78 37.137-144.436 59.018-228.202 59.018-10.741 0-21.398-0.36-31.96-1.068l1.431 0.077v482.645c55.979-10.581 165.888-38.229 230.059-102.4 5.545-4.701 12.782-7.559 20.687-7.559 17.72 0 32.085 14.365 32.085 32.085 0 7.99-2.92 15.297-7.752 20.914l0.035-0.042c-104.448 102.4-295.595 124.587-303.787 125.611-1.029 0.118-2.222 0.186-3.43 0.186-8.299 0-15.853-3.184-21.509-8.398l0.022 0.020c-6.26-5.966-10.252-14.263-10.58-23.493l-0.002-0.059v-553.643c0.232-9.586 4.381-18.16 10.901-24.215l0.021-0.020c5.638-6.159 13.713-10.007 22.686-10.007 0.905 0 1.802 0.039 2.687 0.116l-0.115-0.008zM542.037 633.344c4.208-2.201 9.191-3.493 14.476-3.493 12.467 0 23.256 7.187 28.449 17.644l0.083 0.185c47.445 95.573 194.56 133.803 262.827 146.432v-482.645c-9.296 0.654-20.145 1.027-31.080 1.027-83.544 0-162.005-21.765-230.021-59.935l2.37 1.222c0 8.875 0 18.773 0 29.696 0 17.532-14.212 31.744-31.744 31.744v0 0c-17.72 0-32.085-14.365-32.085-32.085v-93.525c-0.325-1.898-0.511-4.085-0.511-6.315s0.186-4.416 0.543-6.545l-0.032 0.23c3.677-14.57 16.373-25.291 31.674-25.939l0.070-0.002c1.385-0.237 2.981-0.373 4.608-0.373s3.223 0.136 4.776 0.396l-0.168-0.023c9.557 2.731 15.36 4.437 18.773 14.677 91.136 102.4 289.109 78.165 291.157 78.165 1.452-0.246 3.124-0.386 4.829-0.386 7.878 0 15.056 2.999 20.454 7.917l-0.024-0.022c6.542 6.075 10.691 14.649 10.922 24.193l0.001 0.042v556.032c-0.156 17.601-14.461 31.81-32.084 31.81-0.721 0-1.436-0.024-2.146-0.071l0.096 0.005c-10.923 0-271.019-30.379-348.843-187.392-2.341-4.316-3.718-9.451-3.718-14.907 0-11.88 6.526-22.235 16.188-27.678l0.159-0.082zM1013.76 721.067c-15.842 14.454-35.437 25.064-57.148 30.203l-0.878 0.175c-1.59 0.274-3.422 0.431-5.291 0.431-18.053 0-32.687-14.634-32.687-32.687 0-16.184 11.762-29.621 27.204-32.229l0.192-0.027c5.565-1.185 10.484-3.317 14.827-6.239l-0.15 0.095v-505.856c-45.529 7.313-98.018 11.491-151.484 11.491-72.417 0-143.044-7.665-211.114-22.229l6.587 1.181c-12.547-3.875-21.875-14.458-23.869-27.458l-0.024-0.19v-13.995c-1.090-14.75-13.325-26.304-28.258-26.304-0.386 0-0.77 0.008-1.151 0.023l0.055-0.002h-77.483c-0.321-0.013-0.697-0.021-1.075-0.021-14.865 0-27.023 11.588-27.935 26.223l-0.004 0.080v10.581c0 0.012 0 0.026 0 0.039 0 14.808-10.031 27.273-23.669 30.97l-0.225 0.052c-61.483 13.383-132.11 21.049-204.527 21.049-53.465 0-105.955-4.178-157.159-12.226l5.676 0.735v507.221c4.243 2.362 9.197 4.046 14.461 4.755l0.216 0.024c15.634 2.635 27.396 16.072 27.396 32.256 0 18.053-14.634 32.687-32.687 32.687-1.868 0-3.7-0.157-5.483-0.458l0.192 0.027c-22.589-5.315-42.185-15.925-58.128-30.47l0.102 0.091c-6.134-6.011-10.007-14.307-10.239-23.509l-0.001-0.043v-560.811c-0.001-0.107-0.002-0.234-0.002-0.361 0-9.763 4.505-18.474 11.549-24.169l0.059-0.046c5.52-4.764 12.764-7.665 20.686-7.665 1.978 0 3.914 0.181 5.792 0.527l-0.195-0.030c53.202 9.333 114.46 14.668 176.964 14.668 58.748 0 116.395-4.713 172.584-13.782l-6.167 0.821c8.469-43.063 45.918-75.098 90.85-75.098 0.341 0 0.681 0.002 1.021 0.006h76.407c0.558-0.012 1.215-0.019 1.874-0.019 44.803 0 82.112 32.090 90.195 74.539l0.091 0.573c49.24 8.023 105.997 12.607 163.824 12.607 63.797 0 126.29-5.579 187.019-16.276l-6.437 0.939c1.683-0.316 3.619-0.497 5.597-0.497 7.922 0 15.165 2.902 20.727 7.7l-0.041-0.035c7.103 5.74 11.607 14.451 11.607 24.215 0 0.127-0.001 0.254-0.002 0.381v-0.019 562.517c-0.419 8.994-4.257 17.017-10.234 22.863l-0.006 0.006zM726.357 486.912c0.001 0.081 0.001 0.177 0.001 0.273 0 11.78-6.558 22.029-16.222 27.294l-0.163 0.081-300.373 169.984c-4.512 2.613-9.927 4.155-15.701 4.155-17.532 0-31.744-14.212-31.744-31.744 0-0.021 0-0.042 0-0.062v0.003-341.333c0-0.018 0-0.040 0-0.061 0-11.674 6.235-21.893 15.557-27.506l0.145-0.081c4.534-2.787 10.027-4.438 15.905-4.438 0.049 0 0.097 0 0.146 0h-0.007c0.031 0 0.067 0 0.104 0 5.733 0 11.111 1.52 15.753 4.178l-0.155-0.082 301.056 170.667c9.476 5.692 15.719 15.916 15.719 27.598 0 0.378-0.007 0.754-0.019 1.129l0.001-0.054zM425.301 371.541v230.4l204.8-115.029z" />
<glyph unicode="&#xe93f;" glyph-name="users" d="M512 355.84c-80.495 0-145.749 65.254-145.749 145.749s65.254 145.749 145.749 145.749c80.495 0 145.749-65.254 145.749-145.749 0-0.12 0-0.24 0-0.36v0.019c-0.194-80.348-65.374-145.408-145.749-145.408 0 0 0 0-0.001 0v0zM512 584.533c-0.101 0-0.221 0.001-0.341 0.001-45.243 0-81.92-36.677-81.92-81.92s36.677-81.92 81.92-81.92c45.243 0 81.92 36.676 81.92 81.919v0c0 0 0 0 0 0.001 0 45.123-36.483 81.725-81.56 81.919h-0.018zM512 48.299c-166.912 0-242.347 71.339-245.419 74.411l-9.557 9.216v13.653c-0.001 0.249-0.001 0.544-0.001 0.838 0 88.823 45.479 167.025 114.422 212.588l0.95 0.59c5.573 4.791 12.876 7.708 20.862 7.708 17.72 0 32.085-14.365 32.085-32.085 0-12.909-7.624-24.038-18.615-29.129l-0.198-0.082c-48.611-31.869-81.428-84.377-85.978-144.773l-0.038-0.635c49.99-30.683 110.525-48.856 175.305-48.856 5.692 0 11.351 0.14 16.974 0.418l-0.791-0.031c4.546-0.218 9.875-0.342 15.232-0.342 64.75 0 125.259 18.156 176.714 49.655l-1.482-0.844c-4.752 60.983-37.518 113.431-85.302 144.965l-0.714 0.443c-11.19 5.174-18.814 16.302-18.814 29.212 0 17.72 14.365 32.085 32.085 32.085 7.985 0 15.289-2.917 20.904-7.743l-0.042 0.036c69.893-46.153 115.372-124.354 115.372-213.178 0-0.295-0.001-0.589-0.002-0.884v0.045-13.653l-9.557-9.216c-2.048-3.072-77.483-74.411-244.395-74.411zM254.976 556.544c-80.495 0-145.749 65.254-145.749 145.749s65.254 145.749 145.749 145.749c80.495 0 145.749-65.254 145.749-145.749 0-0.12 0-0.24 0-0.36v0.019c0 0 0 0 0 0 0-80.307-65.101-145.408-145.408-145.408-0.12 0-0.24 0-0.36 0h0.019zM254.976 783.872c-0.101 0-0.221 0.001-0.341 0.001-45.243 0-81.92-36.677-81.92-81.92s36.677-81.92 81.92-81.92c45.243 0 81.92 36.676 81.92 81.919v0c0 0 0 0 0 0.001 0 45.123-36.483 81.725-81.56 81.919h-0.018zM200.704 251.733h-3.413c-71.644 3.816-136.497 30.086-188.367 71.832l0.634-0.493-9.557 9.557v12.971c-0.001 0.249-0.001 0.544-0.001 0.838 0 88.823 45.479 167.025 114.422 212.588l0.95 0.59c4.951 3.282 11.031 5.237 17.567 5.237 11.157 0 20.983-5.694 26.732-14.335l0.074-0.118c2.85-4.879 4.532-10.741 4.532-16.996 0-11.17-5.366-21.087-13.66-27.314l-0.088-0.063c-48.35-32.119-81.049-84.489-85.971-144.721l-0.045-0.687c40.072-24.904 87.931-41.156 139.25-44.994l1.038-0.062c16.031-1.553 28.462-14.957 28.462-31.265 0-1.010-0.048-2.009-0.141-2.994l0.010 0.126c-1.103-16.632-14.864-29.705-31.678-29.705-0.263 0-0.525 0.003-0.787 0.010l0.039-0.001zM769.024 556.544c-0.101 0-0.221 0-0.341 0-80.495 0-145.749 65.254-145.749 145.749s65.254 145.749 145.749 145.749c80.495 0 145.749-65.254 145.749-145.749 0-0.12 0-0.24 0-0.36v0.019c-0.194-80.228-65.179-145.214-145.389-145.408h-0.019zM769.024 783.872c-0.101 0-0.221 0.001-0.341 0.001-45.243 0-81.92-36.677-81.92-81.92s36.677-81.92 81.92-81.92c45.243 0 81.92 36.676 81.92 81.919v0c-0.191 45.046-36.56 81.535-81.542 81.92h-0.037zM823.296 251.733c-16.252 0.793-29.467 12.839-32.058 28.473l-0.027 0.199c-0.049 0.665-0.077 1.44-0.077 2.222 0 16.545 12.523 30.165 28.607 31.899l0.142 0.012c52.182 4.239 99.769 20.704 140.909 46.501l-1.304-0.762c-4.967 60.919-37.666 113.289-85.309 144.966l-0.707 0.442c-11.19 5.174-18.814 16.302-18.814 29.212 0 17.72 14.365 32.085 32.085 32.085 7.985 0 15.289-2.917 20.904-7.743l-0.042 0.036c70.295-46.16 116.134-124.536 116.395-213.635v-13.692l-9.557-9.216c-51.237-41.253-116.090-67.523-186.913-71.304l-0.82-0.035z" />
<glyph unicode="&#xe940;" glyph-name="external-link" d="M851.627 475.307c-18.773 0-34.133-15.36-34.133-34.133v-400.725c0-19.797-16.043-35.84-35.84-35.84h-677.205c-19.797 0-35.84 16.043-35.84 35.84v676.864c0 19.797 16.043 35.84 35.84 35.84h391.168c18.773 0 34.133 15.36 34.133 34.133s-15.36 34.133-34.133 34.133h-391.168c-57.685 0-104.448-46.763-104.448-104.448v-676.523c0-57.685 46.763-104.448 104.448-104.448h676.864c57.685 0 104.448 46.763 104.448 104.448v400.725c0 18.773-15.36 34.133-34.133 34.133zM989.867 960h-314.709c-18.773 0-34.133-15.36-34.133-34.133s15.36-34.133 34.133-34.133h229.376l-486.059-489.131c-12.971-13.312-12.971-34.475 0.341-47.787s34.475-13.312 47.787 0l488.789 490.837v-232.448c0-18.773 15.36-34.133 34.133-34.133s34.133 15.36 34.133 34.133v312.661c0 18.773-15.36 34.133-34.133 34.133z" />
<glyph unicode="&#xe941;" glyph-name="sidepanel" d="M923.648 953.515h-823.296c-53.589 0-96.939-43.349-96.939-96.939v-817.152c0-53.589 43.691-96.939 96.939-96.939h823.296c53.589 0 96.939 43.349 96.939 96.939v817.152c0 53.589-43.691 96.939-96.939 96.939zM71.68 39.424v817.152c0 15.701 12.971 28.672 28.672 28.672h260.096v-874.496h-260.096c-15.701 0-28.672 12.971-28.672 28.672zM952.32 39.424c0-15.701-12.971-28.672-28.672-28.672h-494.933v874.496h494.933c15.701 0 28.672-12.971 28.672-28.672v-817.152zM248.149 682.155h-64.171c-18.773 0-34.133-15.36-34.133-34.133s15.36-34.133 34.133-34.133h64.171c18.773 0 34.133 15.36 34.133 34.133s-15.36 34.133-34.133 34.133zM248.149 482.133h-64.171c-18.773 0-34.133-15.36-34.133-34.133s15.36-34.133 34.133-34.133h64.171c18.773 0 34.133 15.36 34.133 34.133s-15.36 34.133-34.133 34.133zM248.149 282.112h-64.171c-18.773 0-34.133-15.36-34.133-34.133s15.36-34.133 34.133-34.133h64.171c18.773 0 34.133 15.36 34.133 34.133s-15.36 34.133-34.133 34.133z" />
<glyph unicode="&#xe943;" glyph-name="warning" d="M512 366.080c-18.851 0-34.133 15.282-34.133 34.133v0 266.923c3.841 14.958 17.205 25.835 33.109 25.835s29.268-10.877 33.058-25.599l0.052-0.237v-267.947c-0.516-17.722-14.464-32.025-31.989-33.105l-0.097-0.005zM561.493 235.349c0-27.334-22.159-49.493-49.493-49.493s-49.493 22.159-49.493 49.493c0 27.334 22.159 49.493 49.493 49.493s49.493-22.159 49.493-49.493zM512-58.539c-0.175 0-0.383 0-0.59 0-85.883 0-166.872 20.95-238.137 58.018l2.866-1.356-7.168-2.731c-37.904-18.971-82.226-31.259-129.098-34.088l-0.95-0.046c-5.386-0.637-11.624-1.001-17.947-1.001-15.234 0-29.975 2.11-43.948 6.054l1.137-0.274c-12.674 5.358-21.951 16.554-24.535 30.123l-0.041 0.256c-0.067 0.972-0.105 2.106-0.105 3.25 0 16.486 7.897 31.128 20.115 40.349l0.128 0.092c2.976 2.392 5.561 5.085 7.768 8.074l0.083 0.118 10.923 16.384c9.496 13.456 19.331 29.181 28.329 45.435l1.367 2.693v4.437c-75.931 87.53-122.203 202.576-122.203 328.43 0 0.816 0.002 1.632 0.006 2.448v-0.126c0 282.77 229.23 512 512 512s512-229.23 512-512v0c-1.933-280.169-229.5-506.543-509.941-506.543-0.724 0-1.447 0.002-2.17 0.005h0.111zM280.235 65.707c0.213 0.005 0.465 0.007 0.717 0.007 6.372 0 12.359-1.647 17.559-4.539l-0.185 0.094c61.793-33.917 135.397-53.886 213.661-53.931h0.014c0.611-0.003 1.335-0.005 2.059-0.005 243.989 0 441.984 196.922 443.722 440.501l0.001 0.165c0 246.198-199.583 445.781-445.781 445.781s-445.781-199.583-445.781-445.781v0c0-0.193 0-0.421 0-0.649 0-116.103 45.5-221.578 119.641-299.568l-0.174 0.185c5.58-6.057 9.001-14.177 9.001-23.097 0-3.951-0.671-7.746-1.906-11.276l0.073 0.239c-3.792-12.731-7.853-23.372-12.589-33.637l0.642 1.552c-12.032-21.257-23.322-38.868-35.435-55.851l1.301 1.92c34.959 3.899 66.833 13.685 95.797 28.379l-1.589-0.731c11.435 5.785 24.829 9.484 39.006 10.23l0.247 0.010zM151.552 98.133v0zM151.552 98.133v0z" />
<glyph unicode="&#xe944;" glyph-name="websites" d="M754.005 745.301c13.385-30.015 21.179-65.040 21.179-101.886 0-1.021-0.006-2.040-0.018-3.058l0.001 0.155c0.006-0.64 0.009-1.397 0.009-2.155 0-36.984-7.791-72.149-21.821-103.942l0.649 1.649c-1.658-3.722-2.623-8.066-2.623-12.635 0-17.532 14.212-31.744 31.744-31.744 0.202 0 0.404 0.002 0.605 0.006h-0.030c0.025 0 0.055 0 0.085 0 13.095 0 24.339 7.93 29.19 19.249l0.079 0.207c16.611 38.226 26.274 82.753 26.274 129.536s-9.663 91.31-27.102 131.692l0.829-2.156c-17.339 41.245-41.452 76.412-71.295 105.771l-0.043 0.042c-5.765 5.765-13.73 9.331-22.528 9.331-17.595 0-31.859-14.264-31.859-31.859 0-8.798 3.566-16.763 9.331-22.528v0c23.967-23.869 43.342-52.329 56.698-83.951l0.646-1.723zM931.499 807.424c-24.028 55.679-56.599 103.235-96.609 143.372l0.012-0.012c-5.807 5.813-13.833 9.408-22.699 9.408s-16.891-3.596-22.698-9.408v0c-5.793-5.753-9.38-13.721-9.38-22.528s3.586-16.775 9.378-22.526l0.002-0.002c34.619-34.218 62.631-75.033 82.009-120.416l0.935-2.464c19.2-44.384 30.367-96.066 30.367-150.357s-11.168-105.974-31.331-152.876l0.963 2.519c-1.586-3.672-2.509-7.947-2.509-12.438 0-13.202 7.974-24.542 19.368-29.466l0.208-0.080c3.551-1.512 7.682-2.39 12.018-2.39 0.095 0 0.19 0 0.285 0.001h-0.015c0.060 0 0.13-0.001 0.201-0.001 13.157 0 24.464 7.919 29.415 19.25l0.080 0.207c21.598 50.426 34.155 109.106 34.155 170.719 0 1.542-0.008 3.082-0.024 4.621l0.002-0.235c0.014 1.303 0.022 2.843 0.022 4.385 0 61.613-12.557 120.293-35.252 173.62l1.097-2.902zM187.392 640.853c0-0.188-0.001-0.411-0.001-0.634 0-46.626 9.668-90.993 27.108-131.208l-0.825 2.135c4.93-11.526 16.174-19.456 29.269-19.456 0.030 0 0.060 0 0.090 0h-0.005c0.025 0 0.054 0 0.083 0 4.517 0 8.829 0.877 12.775 2.471l-0.229-0.082c11.758 4.936 19.866 16.355 19.866 29.667 0 4.445-0.904 8.678-2.537 12.527l0.079-0.21c-13.521 31.012-21.388 67.142-21.388 105.11 0 74.081 29.949 141.167 78.4 189.81l-0.009-0.009c5.793 5.753 9.38 13.721 9.38 22.528s-3.586 16.775-9.378 22.526l-0.002 0.002c-5.807 5.813-13.833 9.408-22.699 9.408s-16.891-3.596-22.698-9.408v0c-60.312-60.239-97.621-143.498-97.621-235.472 0-0.017 0-0.034 0-0.051v0.002zM134.485 439.808c11.668 4.975 19.699 16.349 19.699 29.598 0 4.601-0.969 8.977-2.713 12.933l0.081-0.205c-19.176 44.316-30.33 95.921-30.33 150.132 0 106.625 43.15 203.171 112.941 273.129l-0.008-0.008c5.765 5.765 9.331 13.73 9.331 22.528 0 17.595-14.264 31.859-31.859 31.859-8.798 0-16.763-3.566-22.528-9.331v0c-81.386-80.892-131.758-192.907-131.758-316.687 0-0.625 0.001-1.25 0.004-1.874v0.096c-0.014-1.303-0.022-2.843-0.022-4.385 0-61.613 12.557-120.293 35.252-173.62l-1.097 2.902c5.701-11.36 17.258-19.019 30.605-19.019 4.079 0 7.991 0.715 11.617 2.028l-0.238-0.075zM485.376 485.547v-394.923c-0.109-0.991-0.171-2.141-0.171-3.305 0-17.72 14.365-32.085 32.085-32.085s32.085 14.365 32.085 32.085c0 1.164-0.062 2.314-0.183 3.446l0.012-0.141v394.923c58.562 14.82 101.205 67.049 101.205 129.238 0 73.52-59.6 133.12-133.12 133.12s-133.12-59.6-133.12-133.12c0-62.189 42.644-114.417 100.285-129.040l0.92-0.198zM517.12 683.52c37.703 0 68.267-30.564 68.267-68.267s-30.564-68.267-68.267-68.267c-37.703 0-68.267 30.564-68.267 68.267v0c0 37.703 30.564 68.267 68.267 68.267v0zM642.389 238.421c-0.779 0.068-1.685 0.107-2.6 0.107-16.246 0-29.642-12.205-31.519-27.945l-0.015-0.151c-0.051-0.676-0.080-1.464-0.080-2.259 0-16.425 12.342-29.968 28.258-31.859l0.152-0.015c160.085-17.749 226.645-63.829 226.645-84.309 0-32.085-131.072-90.795-345.088-90.795s-344.747 58.709-344.747 90.795c0 20.48 69.973 68.267 232.107 84.992 16.049 1.732 28.434 15.205 28.434 31.571 0 0.902-0.038 1.795-0.111 2.678l0.008-0.116c-2.868 16.194-16.835 28.334-33.637 28.334-0.174 0-0.349-0.001-0.523-0.004h0.026c-68.267-7.168-289.451-38.912-289.451-148.48 0-102.4 204.8-154.624 409.6-154.624s409.6 53.248 409.6 154.624c-3.413 107.861-220.501 140.288-287.061 147.456z" />
<glyph unicode="&#xe945;" glyph-name="arrow-down" d="M824.32 299.861c-5.807 5.813-13.833 9.408-22.699 9.408s-16.891-3.596-22.698-9.408v0l-234.837-248.149v876.203c0 17.72-14.365 32.085-32.085 32.085s-32.085-14.365-32.085-32.085v-880.981l-234.837 251.563c-5.821 6.32-14.137 10.265-23.374 10.265-8.392 0-16.023-3.256-21.7-8.575l0.018 0.016c-5.895-6.125-9.527-14.467-9.527-23.656 0-8.287 2.953-15.885 7.865-21.797l-0.045 0.056 288.085-307.2c5.789-6.271 14.037-10.198 23.203-10.24h0.008c9.076 0.229 17.236 3.967 23.213 9.901l-0.002-0.002 292.181 307.2c5.696 5.736 9.217 13.64 9.217 22.365 0 9.061-3.796 17.236-9.886 23.019l-0.014 0.013z" />

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 266 KiB

View File

@@ -3,10 +3,15 @@
document.addEventListener('DOMContentLoaded', function () {
const content = document.getElementById('o_content');
// Enforce the presence of the `img-fluid` class on all images in the body
// Enforce the presence of the `img-fluid` class on all images in the body.
content.querySelectorAll('img').forEach(image => {
image.classList.add('img-fluid');
});
// Make all external links open in a new tab by default.
content.querySelectorAll('a.external').forEach(externalLink => {
externalLink.setAttribute('target', '_blank');
})
});
})();

View File

@@ -2,17 +2,17 @@
(function ($) {
document.addEventListener('DOMContentLoaded', () => {
this.navigationMenu = document.getElementById('o_main_toctree');
const navigationMenu = document.getElementById('o_main_toctree');
// Allow to automatically collapse and expand TOC entries
_prepareAccordion(this.navigationMenu);
_prepareAccordion(navigationMenu);
// Allow to respectively highlight and expand the TOC entries and their related TOC
// entry list whose page is displayed.
_flagActiveTocEntriesAndLists();
_flagActiveTocEntriesAndLists(navigationMenu);
// Show hidden menu when the css classes have been properly specified
this.navigationMenu.removeAttribute('hidden');
navigationMenu.removeAttribute('hidden');
});
/**
@@ -23,13 +23,15 @@
* the `show` (Bootstrap) class.
* Also, the deepest TOC entries of their respective branch receive the
* `o_deepest_active_toc_entry` class, and their child TOC entry lists receive the `show` class.
*
* @param {HTMLElement} navigationMenu - The navigation menu.
*/
const _flagActiveTocEntriesAndLists = () => {
const _flagActiveTocEntriesAndLists = navigationMenu => {
const regexLayer = /\btoctree-l(?<layer>\d+)\b/;
let lastLayer = undefined;
let lastTocEntry = undefined;
const deepestTocEntries = [];
this.navigationMenu.querySelectorAll('.current').forEach(element => {
navigationMenu.querySelectorAll('.current').forEach(element => {
if (element.tagName === 'UL') {
element.classList.add('show'); // Expand all related <ul>
} else if (element.tagName === 'LI') {

View File

@@ -3,43 +3,48 @@
// Customize the page TOC
document.addEventListener('DOMContentLoaded', () => {
this.pageToc = document.getElementById('o_page_toc'); // The tree of content of the page
if (this.pageToc) { // The local toctree is not included for toctree pages (see layout.html)
this.headingRefs = this.pageToc.querySelectorAll('a'); // The references to all headings
// Loop on all tree of content of the page. There may be from 0 to 2 depending on the page.
document.querySelectorAll('.o_page_toc').forEach(pageToc => {
const headingRefs = pageToc.querySelectorAll('a'); // The references to all headings.
// If the page TOC has less than 2 headings, in addition to the title, hide it entirely
if (this.headingRefs.length <= 2) {
_hidePageToc();
// If the page TOC has less than 2 headings, in addition to the title, hide it entirely.
if (headingRefs.length <= 2) {
_hidePageToc(pageToc);
return;
}
// Allow to automatically collapse and expand TOC entries
_prepareAccordion(this.pageToc);
_prepareAccordion(pageToc);
// Allow to respectively highlight and expand the TOC entries and their related TOC
// entry list whose section is focused.
_flagActiveTocEntriesAndLists();
_flagActiveTocEntriesAndLists(pageToc, headingRefs);
// Allow to hide the TOC entry referring the title (<h1> heading)
_flagFirstHeadingRef();
_flagFirstHeadingRef(headingRefs);
// Show hidden menu when the css classes have been properly specified
this.pageToc.removeAttribute('hidden');
}
pageToc.removeAttribute('hidden');
});
});
/**
* Entirely hide the local tree of contents.
*
* @param {HTMLElement} pageToc - The tree of content of the page.
*/
const _hidePageToc = () => this.pageToc.style.display = 'none';
const _hidePageToc = pageToc => pageToc.style.display = 'none';
/**
* Add the relevant classes on the TOC entries (and lists) whose section is focused.
*
* TOC entries whose section is focused (<li> elements) receive the `o_active_toc_entry` class
* and their related TOC entry list (<ul> elements) receive the `show` (Bootstrap) class.
*
* @param {HTMLElement} pageToc - The tree of content of the page.
* @param {NodeList} headingRefs - The references to all headings.
*/
const _flagActiveTocEntriesAndLists = () => {
const _flagActiveTocEntriesAndLists = (pageToc, headingRefs) => {
const _updateFlags = () => {
const activeHeadingRef = clickedHeadingRef || _findActiveHeadingRef();
@@ -56,8 +61,8 @@
};
const _findActiveHeadingRef = () => {
let activeHeadingRef = this.headingRefs[0];
this.headingRefs.forEach(headingRef => {
let activeHeadingRef = headingRefs[0];
headingRefs.forEach(headingRef => {
const href = headingRef.getAttribute('href');
if (href !== '#') {
const sectionId = href.replace('#', '');
@@ -78,17 +83,17 @@
};
const _unflagAll = () => {
this.pageToc.querySelectorAll('li,ul').forEach(element => {
pageToc.querySelectorAll('li,ul').forEach(element => {
element.classList.remove('o_active_toc_entry', 'show');
});
this.pageToc.querySelectorAll('i').forEach(element => {
pageToc.querySelectorAll('i').forEach(element => {
element.setAttribute('aria-expanded', false);
});
};
const _flagActiveHierarchy = (headingRef) => {
let tocEntry = headingRef.parentElement;
while (tocEntry !== this.pageToc) {
while (tocEntry !== pageToc) {
if (tocEntry.tagName === 'LI') {
// Highlight all <li> in the active hierarchy
tocEntry.classList.add('o_active_toc_entry');
@@ -104,7 +109,7 @@
};
let clickedHeadingRef = undefined;
this.pageToc.addEventListener('click', ev => {
pageToc.addEventListener('click', ev => {
clickedHeadingRef = ev.target.closest('a[href^="#"]'); // Highlight the clicked ref
});
let timeoutId = undefined;
@@ -122,9 +127,11 @@
/**
* Add the class `o_page_toc_title` on the first heading reference.
*
* @param {NodeList} headingRefs - The references to all headings.
*/
const _flagFirstHeadingRef = () => {
this.headingRefs[0].parentNode.classList.add('o_page_toc_title');
const _flagFirstHeadingRef = headingRefs => {
headingRefs[0].parentNode.classList.add('o_page_toc_title');
}
})();

View File

@@ -15,10 +15,13 @@
document.querySelectorAll('a[class="dropdown-item"]').forEach(element => {
element.addEventListener('click', async event => {
if (element.hasAttribute('href')) {
event.preventDefault();
const fallbackUrls = await _generateFallbackUrls(element.getAttribute('href'));
const fallbackUrl = await _getFirstValidUrl(fallbackUrls);
window.location.href = fallbackUrl;
const targetUrl = element.getAttribute('href');
if (!targetUrl.startsWith('/')) { // Don't test for valid URLs if in localhost.
event.preventDefault();
const fallbackUrls = await _generateFallbackUrls(targetUrl);
const fallbackUrl = await _getFirstValidUrl(fallbackUrls);
window.location.href = fallbackUrl;
}
}
});
});

View File

@@ -57,6 +57,11 @@
content: $i-link;
}
}
.i-external-link {
&:before {
content: $i-external-link;
}
}
.i-websites {
&:before {
content: $i-websites;
@@ -416,4 +421,9 @@
&:before {
content: $i-article;
}
}
}
.i-sidepanel {
&:before {
content: $i-sidepanel;
}
}

View File

@@ -84,6 +84,7 @@ $i-chevron-down: "\e949";
$i-chevron-left: "\e94a";
$i-chevron-right: "\e94b";
$i-link: "\e94f";
$i-external-link: "\e940";
$i-websites: "\e944";
$i-sales: "\e953";
$i-sales_2: "\e931";
@@ -156,6 +157,7 @@ $i-lightbulb: "\e921";
$i-check: "\e909";
$i-edit: "\e932";
$i-article: "\e94e";
$i-sidepanel: "\e941";
//------------------------------------------------------------------------------
@@ -230,9 +232,13 @@ $doc_cyan: $color-alpha;
// Header
$o-header-mobile-height: 50px;
$o-header-height: 90px;
$o-header-height: 80px;
$o-header-white: #ffffff;
$o-subheader-height: calc(#{$o-header-height}/2.5);
$o-headers-mobile-height: calc(#{$o-header-mobile-height} + (#{$o-subheader-height}));
$o-headers-height: calc(#{$o-header-height} + #{$o-subheader-height});
// Navigation
$o-side-nav-width: 350px;
$o-on-page-width: 20%;

View File

@@ -11,10 +11,18 @@ div[aria-label="related navigation"] {
}
body {
position: relative;
a:not(:hover), a.o_logo {
text-decoration: none !important;
}
a.external:after {
content: '#{$i-external-link}';
font-family: icomoon, sans-serif !important;
@include font-size($font-size-base/1.3);
margin: 0 .2rem;
}
dd {
margin-left: 1rem;
}
@@ -36,150 +44,135 @@ body {
display: none !important;
opacity: 0 !important;
}
span.viewcode-link {
float: none;
}
//------------------------------------------------------------------------------
// Header with logo, searchbar and switchers
//------------------------------------------------------------------------------
header.o_main_header {
header {
width: 100%;
height: $o-header-mobile-height;
position: fixed;
top: 0;
left: 0;
right: 0;
background-color: $o-header-white;
z-index: 10;
padding: 0 $padding-s;
@include media-breakpoint-up(lg) {
height: $o-header-height;
padding: 0 $padding-m;
}
@include media-breakpoint-up(xl) {
padding: 0 $padding-l 0 $padding-m;
}
.o_logo_wrapper {
> .o_logo {
img {
margin-bottom: -2px;
vertical-align: baseline;
}
span {
@include font-size($font-size-base);
color: $o-violet;
@include o-easter-egg($img:'img/ducky.svg');
}
.o_main_header {
height: $o-header-mobile-height;
background-color: $o-header-white;
padding: 0 $padding-s;
@include media-breakpoint-up(lg) {
height: $o-header-height;
padding: 0 $padding-m;
}
@include media-breakpoint-up(xl) {
width: calc(#{$o-side-nav-width} - #{$padding-l});
}
@include media-breakpoint-up(lg) {
margin-right: $margin-l;
}
}
.o_logo img {
@include media-breakpoint-up(lg) {
height: 30px
}
}
.o_search_wrapper {
display: flex;
position: relative;
opacity: 1;
@include transition(opacity .3s);
@include media-breakpoint-down(lg) {
display: block;
position: absolute;
width: calc(100% - (#{$padding-s} * 2));
top: calc(100% + #{$padding-s});
}
@include media-breakpoint-up(lg) {
flex-grow: 1;
max-width: 500px;
padding: 0 $padding-l 0 $padding-m;
}
.o_search {
position: relative;
width: 100%;
.o_logo_wrapper {
margin-right: $margin-s;
@include media-breakpoint-up(xl) {
width: calc(#{$o-side-nav-width} - #{$padding-m});
}
@include media-breakpoint-up(lg) {
margin-right: $margin-l;
}
> .o_logo {
img {
margin-bottom: -2px;
vertical-align: baseline;
}
.btn {
@include o-position-absolute($top: 50%, $right: 1rem);
@include o-transform (translateY(-50%)) ;
padding: 0;
font-size: 1.2rem;
color: $gray;
span {
@include font-size($font-size-base);
color: $o-violet;
@include o-easter-egg($img:'img/ducky.svg');
}
}
}
.o_logo img {
@include media-breakpoint-up(lg) {
height: 30px
}
}
> div:not(.o_logo_wrapper) {
@include media-breakpoint-up(lg) {
width: calc(100% - (#{$o-side-nav-width}));
}
}
}
&.o_header_scrolled {
.o_search_wrapper {
@include media-breakpoint-down(lg) {
opacity: 0;
position: relative;
@include media-breakpoint-up(lg) {
padding-right: $padding-m;
}
.o_search {
position: relative;
width: 100%;
.btn {
@include o-position-absolute($top: 50%, $right: .5rem);
@include o-transform (translateY(-50%)) ;
@include media-breakpoint-up(lg) {
right: 1rem;
}
padding: 0;
font-size: 1.2rem;
color: $gray;
}
.form-control {
@include media-breakpoint-down(lg) {
padding: 0.275rem 0.5rem;
font-size: $font-size-secondary;
}
}
}
.highlight-link {
@include o-position-absolute($bottom: -4.5rem, $right: 0);
@include media-breakpoint-up(lg) {
bottom: -1.5rem;
right: $padding-m;
}
margin-bottom: 0;
a {
@include font-size(12px);
}
}
}
}
.highlight-link {
@include o-position-absolute($bottom: -1.5rem, $right: 1rem);
margin-bottom: 0;
a {
@include font-size(12px);
.o_subheader {
background: $gray-lighter;
height: $o-subheader-height;
padding-right: $padding-s;
@include media-breakpoint-up(lg) {
padding: 0 $padding-m;
}
}
.navbar-toggler {
&[aria-expanded="true"] {
.icon-bar {
&:nth-of-type(1) {
@include o-transform(rotate(45deg));;
@include o-transform-origin(10%, 10%)
}
&:nth-of-type(2) {
opacity: 0;
filter: alpha(opacity=0);
}
&:nth-of-type(3) {
@include o-transform(rotate(-45deg));
@include o-transform-origin(10%, 90%)
}
}
@include media-breakpoint-up(xl) {
padding: 0 $padding-l 0 0;
}
.icon-bar {
display: block;
width: 22px;
height: 2px;
background-color: $gray-dark;
@include o-transition(all, .2s);
&+ .icon-bar {
margin-top: 4px;
.o_side_nav_toggler_wrapper {
height: 100%;
button {
&:focus, &:focus-visible{
box-shadow: none;
outline:none;
}
&[aria-expanded="true"]{
background-color: rgba(0,0,0, .2);
}
}
&:nth-of-type(1) {
@include o-transform(rotate(0));
}
&:nth-of-type(2) {
opacity: 1;
filter: alpha(opacity=100);
}
&:nth-of-type(3) {
@include o-transform(rotate(0));
}
}
&:focus {
box-shadow: none;
outline:none;
}
}
}
@@ -190,32 +183,44 @@ header.o_main_header {
.o_side_nav {
width: 100%;
height: 100%;
overflow-y: auto;
position: fixed;
top: -100%;
left:0;
@include o-transition(all, .3s);
padding-top: 4rem;
padding-left: $padding-s;
background-color: lighten($o-violet-dark, 70%) ;
z-index: 10;
@include font-size($font-size-secondary);
color: $o-violet-dark;
font-weight: $fw_regular;
@include media-breakpoint-up(lg) {
width: calc(#{$o-side-nav-width} - 1rem);
height: calc(100vh - #{$o-header-height});
top: $o-header-height;
padding-top: $padding-m;
padding-left: $padding-m;
.o_mobile-overlay {
background-color: rgba(0,0,0,.3);
@include o-position-absolute($top: 0, $bottom: 0, $left: 0, $right:0);
opacity: 0;
transition: opacity .2s linear;
z-index: -100;
}
@include media-breakpoint-up(xl) {
width: $o-side-nav-width;
.o_side_nav-inner {
width: 90%;
height: calc(100% - (#{$o-headers-mobile-height});
overflow-y: auto;
position: fixed;
left: -100%;
@include o-transition(all, .3s);
padding-left: $padding-s;
background-color: lighten($o-violet-dark, 70%) ;
z-index: 10;
@include font-size($font-size-secondary);
color: $o-violet-dark;
font-weight: $fw_regular;
@include media-breakpoint-up(lg) {
width: $o-side-nav-width;
height: calc(100vh - (#{$o-headers-height}));
left: 0;
padding-top: $padding-m;
padding-left: $padding-m;
}
}
&.show {
top: $o-header-mobile-height;
.o_mobile-overlay {
opacity: 1;
z-index: 1;
}
.o_side_nav-inner {
left: 0;
}
}
.toctree-l1 {
@@ -227,6 +232,23 @@ header.o_main_header {
font-weight: 600;
}
}
.o_main_toc {
> ul {
li {
&.o_active_toc_entry {
&:not(.toctree-l1) > .o_toc_entry_wrapper i[class^="i-"]:not(.collapsed), > a , > .o_toc_entry_wrapper a, > .o_toc_entry_wrapper i {
color: $o-violet-dark;
}
}
a {
&.current {
color: $o-violet-dark;
}
}
}
}
}
ul {
.o_deepest_active_toc_entry {
@@ -235,20 +257,6 @@ header.o_main_header {
margin-left: -3px;
}
li {
&.o_active_toc_entry {
&:not(.toctree-l1) > .o_toc_entry_wrapper i[class^="i-"]:not(.collapsed), > a , > .o_toc_entry_wrapper a, > .o_toc_entry_wrapper i {
color: $o-violet-dark;
}
}
a {
&.current {
color: $o-violet-dark;
}
}
}
> .toctree-l1 {
&[class*="o_menu_"] > .o_toc_entry_wrapper > i:before {
@include o-inline-icon($i-doc-apps, 0 5px 0 0);
@@ -292,7 +300,7 @@ header.o_main_header {
}
}
.o_side_nav, .o_page_toc_nav {
.o_main_toc, .o_page_toc_nav {
ul { // all uls in toc
list-style: none;
padding-left: $padding-s;
@@ -350,19 +358,28 @@ header.o_main_header {
//------------------------------------------------------------------------------
aside.o_page_toc {
display: none;
color: $body-color;
@include font-size($font-size-secondary);
@include media-breakpoint-up(xl) {
display: block;
&:not(.o_in_nav_toc) {
display: none;
@include media-breakpoint-up(xl) {
display: block;
top: $o-headers-height;
right: 0;
padding: $padding-l $padding-s $padding-l 0;
overflow-y: auto;
}
position: -webkit-sticky;
position: sticky;
top: $o-header-height;
right: 0;
width: $o-on-page-width;
height: 100%;
max-height: calc(100vh - #{$o-header-height});
padding: $padding-l $padding-s $padding-l 0;
overflow-y: auto;
max-height: calc(100vh - #{$o-headers-height});
}
&.o_in_nav_toc {
display: block;
@include media-breakpoint-up(xl) {
display: none;
}
}
h3 {
@@ -392,11 +409,11 @@ header.o_main_header {
//------------------------------------------------------------------------------
#wrap {
margin-top: $o-header-mobile-height;
margin-top: $o-headers-mobile-height;
@include media-breakpoint-up(lg) {
display: flex;
justify-content: space-between;
margin-top: $o-header-height;
margin-top: $o-headers-height;
}
code {
@@ -416,7 +433,6 @@ header.o_main_header {
main {
position: relative;
padding-top: 5rem;
padding-bottom: $padding-l;
@include media-breakpoint-up(lg) {
left: calc(#{$o-side-nav-width} - #{$padding-s});
@@ -604,6 +620,7 @@ header.o_main_header {
}
article.doc-body {
padding-top: $padding-s;
position: relative;
.o_git_link {
@@ -621,10 +638,18 @@ header.o_main_header {
font-family: var(--bs-font-monospace);
}
.field-list {
dl.field-list {
@include font-size($font-size-secondary);
padding: .5rem;
border: 1px solid $gray-light;
@include media-breakpoint-down(lg) {
display: block;
}
> dt, > dd {
padding-left: 0;
padding-right: 0;
}
ul {
list-style: none;
@@ -1071,7 +1096,7 @@ header.o_main_header {
> div[class^="highlight-"]{
border: 0 !important;
}
> *:last-child {
margin-bottom: 0 !important;
}

View File

@@ -253,7 +253,7 @@ administration/upgrade/process.rst administration/upgrade.rst
administration/upgrade/service_level.rst administration/upgrade.rst # upgrade/service_level -> upgrade
developer/webservices/iap.rst developer/misc/api/iap.rst
developer/webservices/odoo.rst developer/misc/api/odoo.rst
developer/webservices/odoo.rst developer/misc/api/external_api.rst
developer/webservices/localizations.rst developer/misc/i18n/localization.rst
developer/reference/translations.rst developer/misc/i18n/translations.rst
developer/reference/cmdline.rst developer/misc/other/cmdline.rst
@@ -278,6 +278,8 @@ services/support/supported_versions.rst administration/maintain/supported_versio
# Redirections introduced in 14.0 :
developer/misc/api/odoo.rst developer/misc/api/external_api.rst
applications/sales/crm/acquire_leads/generate_from_email.rst applications/sales/crm/acquire_leads/generate_leads.rst # (#986)
applications/sales/crm/acquire_leads/generate_from_website.rst applications/sales/crm/acquire_leads/generate_leads.rst # (#986)
@@ -301,6 +303,8 @@ purchase/replenishment/multicompany/setup.rst applications/general/multi_compani
applications/general/product_images.rst applications/sales/sales/products_prices/products/product_images.rst # fix a wrong target hard-coded in Odoo
applications/finance/accounting/payables/supplier_bills/ocr.rst applications/finance/accounting/payables/supplier_bills/invoice_digitization.rst # ocr --> invoice_digitization
applications/sales/crm/optimize/outlook_extension.rst applications/productivity/mail_plugins/outlook.rst
applications/general/payment_acquirers/adyen.rst applications/finance/payment_acquirers/adyen.rst

View File

@@ -1,8 +1,8 @@
docutils>=0.14,<0.19
docutils==0.16.0 # Compatibility with sphinx-tabs 3.2.0.
jinja2<3.1 # Compatibility with Sphinx 3.5.4.
libsass==0.18.0
pygments~=2.6.1
pygments-csv-lexer~=0.1
sphinx~=3.0
sphinx-tabs~=3.2.0
sphinx-tabs==3.2.0
werkzeug==0.14.1