[IMP] web, *: simplification and standardization of the settings arch

The aim of this commit is to simplify and standardize the settings archs.

To do this, a small DSL exclusively for the settings was created. This
new DSL introduces 3 tags: `app`, `block` and `setting`.

The `app` tag is used to declare the application on the settings view.
It creates an entry with its logo on the sidebar of the view. It also
acts as delimiter when searching.

```xml
    <app string="CRM" name="crm">
    ...
    </app>
```

- `string` : The "display" name of the application.
- `name` : The technical name of the application (the name of the module).
- `logo` *optional* : The relative path to the logo. If not set, the
        logo is created using the `name` parameter :
        `/{name}/static/description/icon.png`.

The `block` tag is used to declare a group of settings. This group can
have a title and a description/help.

```xml
    <block title="Title of group Bar">
    ...
    </block>
```

- `title` *optional* : The title of the block of settings (the old h2),
        you can perform research on its text.
- `help` *optional* : The description/help of the block of settings
        (the old h3), you can perform research on its text.

The `setting` tag is used to declare the setting itself. The first field
in the setting is used as the main field (optional). This field is
placed on the left panel (if it's a boolean field) or on the top of the
right panel (otherwise). The field is also used to create the setting
label if a `string` is not defined. The `setting` tag can also contain
more elements (e.g. html), all of these elements are rendered in the
right panel.

```xml
    <setting string="this is bar">
        <field name="bar"/>
        ...More elements
    </setting>
```

- `type` *optional* : By default, a setting is visually separated on two
        panels (left and right), and is used to edit a given field. By
        defining `type='header'`, a special kind of setting is rendered
        instead. This setting is used to modify the scope of the other
        settings. For example, on the website application, this setting
        is used to indicate to which website the other settings apply.
        The header setting is visually represented as a yellow banner on
        the top of the screen.
- `string` *optional* : The text used as label of the setting. If it's
        not defined, the first field is used as label.
- `title` *optional* : The text used as tooltip.
- `help` *optional* : The help/description of the setting. This text is
        displayed just below the setting label (with classname
        `text-muted`).
- `company_dependent` *optional* : If this attribute is set to "1" an
        icon is displayed next to the setting label to explicit that
        this setting is company-specific.
- `documentation` *optional* :  If this attribute is set, an icon is
        added next to the setting label, this icon is a link to the
        documentation. Note that you can use relative or absolute path.
        The relative path is relative to
        `https://www.odoo.com/documentation/server_version`, so it's not
        necessary to hard-code the server version on the arch anymore.

closes odoo/odoo#106425

Task-id: 3081367
Related: odoo/enterprise#34337
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: "Michael Mattiello (mcm)" <mcm@odoo.com>
This commit is contained in:
Jorge Pinna Puissant
2022-12-02 14:40:25 +01:00
co-authored by Michael Mattiello (mcm)
parent 7b8bb75368
commit c7c2959449
105 changed files with 2992 additions and 6141 deletions
@@ -6,344 +6,190 @@
<field name="priority" eval="0"/>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block" data-string="General Settings" string="General Settings" data-key="general_settings">
<xpath expr="//form" position="inside">
<app data-string="General Settings" string="General Settings" name="general_settings" logo="/base/static/description/settings.png">
<div id="invite_users">
<h2>Users</h2>
<div class="row mt16 o_settings_container" name="users_setting_container">
<div class="col-12 col-lg-6 o_setting_box" id="invite_users_setting">
<div class="o_setting_right_pane">
<widget name='res_config_invite_users'/>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="active_user_setting">
<div class="o_setting_right_pane">
<span class="fa fa-lg fa-users" aria-label="Number of active users"/>
<field name='active_user_count' class="w-auto ps-3 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('active_user_count', '&gt;', '1')]}">
Active User
</span>
<span class='o_form_label' attrs="{'invisible':[('active_user_count', '&lt;=', '1')]}">
Active Users
</span>
<a href="https://www.odoo.com/documentation/master/applications/general/users.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<br/>
<button name="%(base.action_res_users)d" icon="fa-arrow-right" type="action" string="Manage Users" class="btn-link o_web_settings_access_rights"/>
</div>
</div>
</div>
<block title="Users" name="users_setting_container">
<setting id="invite_users_setting">
<widget name='res_config_invite_users'/>
</setting>
<setting id="active_user_setting">
<span class="fa fa-lg fa-users" aria-label="Number of active users"/>
<field name='active_user_count' class="w-auto ps-3 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('active_user_count', '&gt;', '1')]}">
Active User
</span>
<span class='o_form_label' attrs="{'invisible':[('active_user_count', '&lt;=', '1')]}">
Active Users
</span>
<a href="https://www.odoo.com/documentation/master/applications/general/users.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<br/>
<button name="%(base.action_res_users)d" icon="fa-arrow-right" type="action" string="Manage Users" class="btn-link o_web_settings_access_rights"/>
</setting>
</block>
</div>
<div id="languages">
<h2>Languages</h2>
<div class='row mt16 o_settings_container' name="languages_setting_container">
<div class='col-xs-12 col-md-6 o_setting_box' id="languages_setting">
<div class='o_setting_right_pane'>
<!-- TODO This is not an ideal solution but it looks ok on the interface -->
<div class="w-50">
<field name="language_count" class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('language_count', '&gt;', '1')]}">
Language
</span>
<span class='o_form_label' attrs="{'invisible':[('language_count', '&lt;=', '1')]}">
Languages
</span>
</div>
<div class="mt8">
<button name="%(base.action_view_base_language_install)d" icon="fa-arrow-right" type="action" string="Add Languages" class="btn-link"/>
</div>
<div class="mt8" groups="base.group_no_one">
<button name="%(base.res_lang_act_window)d" icon="fa-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
</div>
<block title="Languages" name="languages_setting_container">
<setting id="languages_setting">
<!-- TODO This is not an ideal solution but it looks ok on the interface -->
<div class="w-50">
<field name="language_count" class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('language_count', '&gt;', '1')]}">
Language
</span>
<span class='o_form_label' attrs="{'invisible':[('language_count', '&lt;=', '1')]}">
Languages
</span>
</div>
</div>
</div>
<div class="mt8">
<button name="%(base.action_view_base_language_install)d" icon="fa-arrow-right" type="action" string="Add Languages" class="btn-link"/>
</div>
<div class="mt8" groups="base.group_no_one">
<button name="%(base.res_lang_act_window)d" icon="fa-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
</div>
</setting>
</block>
</div>
<div id="companies">
<h2>Companies</h2>
<div class="row mt16 o_settings_container" name="companies_setting_container">
<div class="col-12 col-lg-6 o_setting_box" id="company_details_settings">
<field name="company_id" invisible="1"/>
<div class="o_setting_right_pane">
<field name="company_name" class="fw-bold"/>
<br/>
<field name="company_informations" class="text-muted" style="width: 90%;"/>
<br/>
<button name="open_company" icon="fa-arrow-right" type="object" string="Update Info" class="btn-link"/>
</div>
<block title="Companies" name="companies_setting_container">
<field name="company_id" invisible="1"/>
<setting id="company_details_settings">
<field name="company_name" nolabel="1" class="fw-bold"/>
<br/>
<div class="o_setting_right_pane">
<span class="o_form_label">Document Layout</span>
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
<div class="text-muted">
Choose the layout of your documents
</div>
<div class="content-group">
<div class="mt16" groups="base.group_no_one">
<label for="external_report_layout_id" string="Layout" class="col-3 col-lg-3 o_light_label"/>
<field name="external_report_layout_id" domain="[('type','=', 'qweb')]" class="oe_inline"/>
</div>
<div class="mt8">
<button name="%(web.action_base_document_layout_configurator)d" string="Configure Document Layout" type="action" class="oe_link" icon="fa-arrow-right"/>
<button name="edit_external_header" string="Edit Layout" type="object" class="oe_link" groups="base.group_no_one"/>
<button name="%(web.action_report_externalpreview)d" string="Preview Document" type="action" class="oe_link" groups="base.group_no_one"/>
</div>
</div>
</div>
<field name="company_informations" class="text-muted" style="width: 90%;"/>
<br/>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="companies_setting">
<div class="o_setting_right_pane">
<field name='company_count' class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('company_count', '&gt;', '1')]}">
Company
</span>
<span class='o_form_label' attrs="{'invisible':[('company_count', '&lt;=', '1')]}">
Companies
</span>
<br/>
<div class="mt8">
<button name="%(base.action_res_company_form)d" icon="fa-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
</div>
<button name="open_company" icon="fa-arrow-right" type="object" string="Update Info" class="btn-link"/>
</setting>
<setting id="companies_setting">
<field name='company_count' nolabel="1" class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('company_count', '&gt;', '1')]}">
Company
</span>
<span class='o_form_label' attrs="{'invisible':[('company_count', '&lt;=', '1')]}">
Companies
</span>
<br/>
<div class="mt8">
<button name="%(base.action_res_company_form)d" icon="fa-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
</div>
</div>
<div id="inter_company" class="col-12 col-lg-6 o_setting_box" groups="base.group_multi_company" title="Configure company rules to automatically create SO/PO when one of your company sells/buys to another of your company.">
<field name="company_id" invisible="1"/>
<div class="o_setting_left_pane">
<field name="module_account_inter_company_rules" widget="upgrade_boolean"/>
</div>
<div class="o_setting_right_pane">
<label string="Inter-Company Transactions" for="module_account_inter_company_rules"/>
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
<div class="text-muted">
Automatically generate counterpart documents for orders/invoices between companies
</div>
<div class="content-group" attrs="{'invisible': [('module_account_inter_company_rules','=',False)]}" id="inter_companies_rules">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</setting>
<setting id="document_layout_setting" string="Document Layout" help="Choose the layout of your documents" company_dependent="1">
<div class="content-group">
<div class="mt16" groups="base.group_no_one">
<label for="external_report_layout_id" string="Layout" class="col-3 col-lg-3 o_light_label"/>
<field name="external_report_layout_id" domain="[('type','=', 'qweb')]" class="oe_inline"/>
</div>
<button name="%(web.action_base_document_layout_configurator)d" string="Configure Document Layout" type="action" class="oe_link" icon="fa-arrow-right"/>
<br groups="base.group_no_one"/>
<button name="edit_external_header" string="Edit Layout" type="object" class="oe_link" groups="base.group_no_one" icon="fa-arrow-right"/>
<br groups="base.group_no_one"/>
<button name="%(web.action_report_externalpreview)d" string="Preview Document" type="action" class="oe_link" groups="base.group_no_one" icon="fa-arrow-right"/>
</div>
</div>
</div>
</setting>
<field name="company_id" invisible="1"/>
<setting id="inter_company" string="Inter-Company Transactions" company_dependent="1" help="Automatically generate counterpart documents for orders/invoices between companies" groups="base.group_multi_company" title="Configure company rules to automatically create SO/PO when one of your company sells/buys to another of your company.">
<field name="module_account_inter_company_rules" widget="upgrade_boolean"/>
<div class="content-group" attrs="{'invisible': [('module_account_inter_company_rules','=',False)]}" id="inter_companies_rules">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</setting>
</block>
</div>
<div id="emails"/>
<div id="contacts_settings">
<h2>Contacts</h2>
<div class="row mt16 o_settings_container" name="contacts_setting_container">
<div class="col-xs-12 col-md-6 o_setting_box" id="sms">
<div class="o_setting_right_pane" id="sms_settings">
<div class="o_form_label">
Send SMS
<a href="https://www.odoo.com/documentation/master/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ms-1 o_doc_link" target="_blank"></a>
</div>
<div class="text-muted">
Send texts to your contacts
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box" title="When populating your address book, Odoo provides a list of matching companies. When selecting one item, the company data and logo are auto-filled." id="partner_autocomplete">
<div class="o_setting_left_pane">
<field name="module_partner_autocomplete"/>
</div>
<div class="o_setting_right_pane" id="partner_autocomplete_settings">
<label for="module_partner_autocomplete"/>
<div class="text-muted">
Automatically enrich your contact base with company data
</div>
</div>
</div>
</div>
<block title="Contacts" name="contacts_setting_container">
<setting id="sms" string="Send SMS" documentation="/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" help="Send texts to your contacts" />
<setting help="Automatically enrich your contact base with company data" title="When populating your address book, Odoo provides a list of matching companies. When selecting one item, the company data and logo are auto-filled." id="partner_autocomplete">
<field name="module_partner_autocomplete"/>
</setting>
</block>
</div>
<h2>Permissions</h2>
<div class="row mt16 o_settings_container" id="user_default_rights">
<div class="col-12 col-lg-6 o_setting_box" title="By default, new users get highest access rights for all installed apps." id="access_rights">
<div class="o_setting_left_pane">
<field name="user_default_rights"/>
</div>
<div class="o_setting_right_pane">
<label string="Default Access Rights" for="user_default_rights"/>
<div class="text-muted">
Set custom access rights for new users
</div>
<div class="content-group" attrs="{'invisible': [('user_default_rights','=',False)]}">
<div class="mt8">
<button type="object" name="open_default_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
</div>
<block title="Permissions" id="user_default_rights">
<setting string="Default Access Rights" help="Set custom access rights for new users" title="By default, new users get highest access rights for all installed apps." id="access_rights">
<field name="user_default_rights"/>
<div class="content-group" attrs="{'invisible': [('user_default_rights','=',False)]}">
<div class="mt8">
<button type="object" name="open_default_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box"
groups="base.group_system">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<button type="action" name="%(base.action_apikeys_admin)d" string="Manage API Keys" icon="fa-arrow-right" class="btn-link"/>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" groups="base.group_no_one" id="allow_import">
<div class="o_setting_left_pane">
<field name="module_base_import" />
</div>
<div class="o_setting_right_pane">
<label string="Import &amp; Export" for="module_base_import"/>
<a href="https://www.odoo.com/documentation/master/applications/general/export_import_data.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Allow users to import data from CSV/XLS/XLSX/ODS files
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="feedback_motivate_setting" groups="base.group_no_one">
<div class="o_setting_left_pane">
<field name="show_effect"/>
</div>
<div class="o_setting_right_pane">
<label for="show_effect"/>
<div class="text-muted">
Add fun feedback and motivate your employees
</div>
</div>
</div>
</div>
</setting>
<setting string="API Keys" help="API Keys allow your users to access Odoo with external tools when multi-factor authentication is enabled." groups="base.group_system">
<button type="action" name="%(base.action_apikeys_admin)d" string="Manage API Keys" icon="fa-arrow-right" class="btn-link"/>
</setting>
<setting string="Import &amp; Export" help="Allow users to import data from CSV/XLS/XLSX/ODS files" documentation="/applications/general/export_import_data.html" groups="base.group_no_one" id="allow_import">
<field name="module_base_import" />
</setting>
<setting id="feedback_motivate_setting" help="Add fun feedback and motivate your employees" groups="base.group_no_one">
<field name="show_effect"/>
</setting>
</block>
<h2>Integrations</h2>
<div class="row mt16 o_settings_container" name="integration">
<div class="col-12 col-lg-6 o_setting_box" id="mail_pluggin_setting">
<div class="o_setting_left_pane">
<field name="module_mail_plugin" />
<block title="Integrations" name="integration">
<setting string="Mail Plugin" documentation="/applications/productivity/mail_plugins.html" help="Integrate with mail client plugins" id="mail_pluggin_setting">
<field name="module_mail_plugin" />
</setting>
<setting string="Outlook Calendar" documentation="/applications/general/calendars/outlook/outlook_calendar.html" help="Synchronize your calendar with Outlook" id="sync_outlook_calendar_setting">
<field name="module_microsoft_calendar" />
<div class="content-group" attrs="{'invisible': [('module_microsoft_calendar', '=', False)]}" id="msg_module_microsoft_calendar">
<div class="text-warning mt16"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
<div class="o_setting_right_pane">
<label string="Mail Plugin" for="module_mail_plugin"/>
<a href="https://www.odoo.com/documentation/master/applications/productivity/mail_plugins.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Integrate with mail client plugins
</div>
</setting>
<setting string="Google Calendar" documentation="/applications/general/calendars/google/google_calendar_credentials.html" help="Synchronize your calendar with Google Calendar" id="sync_google_calendar_setting">
<field name="module_google_calendar"/>
<div class="content-group" attrs="{'invisible': [('module_google_calendar','=',False)]}" id="msg_module_google_calendar">
<div class="text-warning mt16"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="sync_outlook_calendar_setting">
<div class="o_setting_left_pane">
<field name="module_microsoft_calendar" />
</div>
<div class="o_setting_right_pane">
<label string="Outlook Calendar" for="module_microsoft_calendar"/>
<a href="https://www.odoo.com/documentation/master/applications/general/calendars/outlook/outlook_calendar.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Synchronize your calendar with Outlook
</div>
<div class="content-group" attrs="{'invisible': [('module_microsoft_calendar', '=', False)]}" id="msg_module_microsoft_calendar">
<div class="text-warning mt16"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="sync_google_calendar_setting">
<div class="o_setting_left_pane">
<field name="module_google_calendar" />
</div>
<div class="o_setting_right_pane">
<label string="Google Calendar" for="module_google_calendar"/>
<a href="https://www.odoo.com/documentation/master/applications/general/calendars/google/google_calendar_credentials.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Synchronize your calendar with Google Calendar
</div>
<div class="content-group" attrs="{'invisible': [('module_google_calendar','=',False)]}" id="msg_module_google_calendar">
<div class="text-warning mt16"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</div>
</div>
</setting>
<div id="product_get_pic_setting"/>
<div class="col-12 col-lg-6 o_setting_box" id="module_auth_oauth">
<div class="o_setting_left_pane">
<field name="module_auth_oauth" />
<setting string="OAuth Authentication" help="Use external accounts to log in (Google, Facebook, etc.)" id="module_auth_oauth">
<field name="module_auth_oauth" />
<div class="content-group mt16" attrs="{'invisible': [('module_auth_oauth','=',False)]}" id="msg_module_auth_oauth">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
<div class="o_setting_right_pane">
<label string="OAuth Authentication" for="module_auth_oauth"/>
<div class="text-muted">
Use external accounts to log in (Google, Facebook, etc.)
</div>
<div class="content-group mt16" attrs="{'invisible': [('module_auth_oauth','=',False)]}" id="msg_module_auth_oauth">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</setting>
<setting string="LDAP Authentication" help="Use LDAP credentials to log in" documentation="/applications/general/auth/ldap.html" id="oauth">
<field name="module_auth_ldap"/>
<div class="content-group" attrs="{'invisible': [('module_auth_ldap','=',False)]}" id="auth_ldap_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="oauth">
<div class="o_setting_left_pane">
<field name="module_auth_ldap"/>
</setting>
<setting documentation="/websites/website/optimize/unsplash.html" help="Find free high-resolution images from Unsplash" id="unsplash">
<field name="module_web_unsplash"/>
<div class="content-group" attrs="{'invisible': [('module_web_unsplash', '=', False)]}" id="web_unsplash_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
<div class="o_setting_right_pane" name="auth_ldap_right_pane">
<label string="LDAP Authentication" for="module_auth_ldap"/>
<a href="https://www.odoo.com/documentation/master/applications/general/auth/ldap.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Use LDAP credentials to log in
</div>
<div class="content-group" attrs="{'invisible': [('module_auth_ldap','=',False)]}" id="auth_ldap_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</setting>
<setting string="Geo Localization" help="GeoLocalize your partners" id="base_geolocalize">
<field name="module_base_geolocalize"/>
<div class="content-group" attrs="{'invisible': [('module_base_geolocalize','=', False)]}" name="base_geolocalize_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to choose your Geo Provider.</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="unsplash">
<div class="o_setting_left_pane">
<field name="module_web_unsplash"/>
</setting>
<setting help="Protect your forms from spam and abuse." id="recaptcha">
<field name="module_google_recaptcha"/>
<div class="content-group" attrs="{'invisible': [('module_google_recaptcha', '=', False)]}" id="recaptcha_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up reCaptcha.</div>
</div>
<div class="o_setting_right_pane" id="web_unsplash_settings">
<label for="module_web_unsplash"/>
<a href="https://www.odoo.com/documentation/master/applications/websites/website/optimize/unsplash.html" title="Documentation" class="o_doc_link" target="_blank"></a>
<div class="text-muted">
Find free high-resolution images from Unsplash
</div>
<div class="content-group" attrs="{'invisible': [('module_web_unsplash', '=', False)]}" id="web_unsplash_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up the feature.</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="base_geolocalize">
<div class="o_setting_left_pane">
<field name="module_base_geolocalize"/>
</div>
<div class="o_setting_right_pane" id="web_geolocalize_settings">
<label string="Geo Localization" for="module_base_geolocalize"/>
<div class="text-muted">
GeoLocalize your partners
</div>
<div class="content-group" attrs="{'invisible': [('module_base_geolocalize','=', False)]}" name="base_geolocalize_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to choose your Geo Provider.</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="recaptcha">
<div class="o_setting_left_pane">
<field name="module_google_recaptcha"/>
</div>
<div class="o_setting_right_pane" id="website_recaptcha_settings">
<label for="module_google_recaptcha"/>
<div class="text-muted">
Protect your forms from spam and abuse.
</div>
<div class="content-group" attrs="{'invisible': [('module_google_recaptcha', '=', False)]}" id="recaptcha_warning">
<div class="mt16 text-warning"><strong>Save</strong> this page and come back here to set up reCaptcha.</div>
</div>
</div>
</div>
</div>
</setting>
</block>
<h2 groups="base.group_no_one">Performance</h2>
<div groups="base.group_no_one" class="row mt16 o_settings_container" name="performance">
<div class="col-12 col-lg-6 o_setting_box" id="profiling_enabled_until">
<label for="profiling_enabled_until"/>
<field name="profiling_enabled_until"/>
<div class="text-muted">
Enable the profiling tool. Profiling may impact performance while being active.
</div>
</div>
</div>
<block title="Performance" groups="base.group_no_one" name="performance">
<setting id="profiling_enabled_until" help="Enable the profiling tool. Profiling may impact performance while being active.">
<field name="profiling_enabled_until"/>
</setting>
</block>
<widget name='res_config_dev_tool'/>
<div id='about'>
<h2>About</h2>
<div class="row mt16 o_settings_container" name="about_setting_container">
<div class='col-12 col-lg-6 o_setting_box' id='appstore'>
<block title="About" name="about_setting_container">
<setting id='appstore'>
<div class="d-flex">
<div class="o_setting_right_pane">
<div>
<!-- FIXME Those links are defined directly in the template which means that we will have to
update the template code is the link ever changes -->
<a class="d-block mx-auto" href="https://play.google.com/store/apps/details?id=com.odoo.mobile" target="blank">
@@ -356,11 +202,11 @@
</a>
</div>
</div>
</div>
</setting>
<widget name='res_config_edition'/>
</div>
</block>
</div>
</div>
</app>
</xpath>
</field>
</record>