Files
odoo_source/addons/website/views/res_config_settings_views.xml
T
Romain Derie 985e49bdb5 [FIX] website: remove Google Analytics dashboard (deprecated)
==== Short version ====

Google is deprecating Universal Analytics in July 2023 and Google
Sign-In in March 2023. Google Analytics Embed API is based on Sign-In,
meaning it won't work anymore. It actually already doesn't work anymore
for accounts created somewhere after mid-2020 apparently.
There is no plan for now for Google to allow Analytics 4 dashboard to be
embed in external website.
We therefore can't do anything to keep the Google Analytics dashboard in
Odoo.
In previous stable version, it was kept but is displaying a warning
about it (as until mid 2023 old accounts can still embed it).
All this is about the embed dashboard, not the tracking in itself for
which Odoo is already adapted in Odoo 15.0 for Analytics 4.

==== Detailed version (following short version, read it first)  ====

- Universal Analytics EOL July 2023, see [1].
- It will be replaced by Analytics 4 for which Odoo is already ready and
  actually using it since version 15.0 with [2].
- Google Sign-In EOL March 2023, see [3]. Analytics Embed API was based
  on it, it won't work anymore.
- There is no plan (for now) for Google to allow Analytics 4 to be able
  to be embed in external websites. They seem to just have dropped the
  "feature".
  This was confirmed by Google here [4] and indirectly here [5] in the
  DOC:
  `Note: This API does not support Google Analytics 4 (GA4) properties`
- While the EOL is planed for 2023, the dashboard integration is already
  not working anymore for new accounts.
- Old projects/keys/accounts can still embed their analytics dashboard.
  The threshold seems to be somewhere mid-2020, according to [6].
  It seems to be accurate as my own key from 2018 still works, while my
  keys from 2021 do not.

==== Fix ====

- In stable, warn user about it in their Odoo Analytics dashboard (this
  PR) and also add a warning about that on the doc.
- In master, simply drop the whole google analytics dashboard
  integration and remove the doc about it, see [7].

==== Useful links ====

[1]: https://support.google.com/analytics/answer/11583528?hl=en
[2]: https://github.com/odoo/odoo/commit/78bc86cbeccfc5df16218aee2b0d7c501e5c05b5
[3]: https://developers.googleblog.com/2022/03/gis-jsweb-authz-migration.html
[4]: https://issuetracker.google.com/issues/233738709?pli=1
[5]: https://developers.google.com/analytics/devguides/reporting/embed/v1
[6]: https://support.google.com/analytics/answer/11583832
[7]: https://www.odoo.com/documentation/15.0/applications/websites/website/optimize/google_analytics_dashboard.html

Finally, note that it means that from July 2023 to Octobre 2023, while
Odoo 14.0 is still supported, Google Analytics won't work anymore in
that version as it will still be designed for Universal Analytics and
not Analytics 4.

opw-2710910
opw-2855405
opw-2881515
opw-2892370
task-2790245
task-2820890

closes odoo/odoo#96280

X-original-commit: d065595f77790fb5ab9480f6de5b88549352324b
Related: odoo/enterprise#29666
Related: odoo/upgrade#3698
Related: odoo/documentation#2499
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
2022-07-26 15:48:43 +02:00

340 lines
22 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form_inherit_auth_signup" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.website</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="auth_signup.res_config_settings_view_form"/>
<field name="arch" type="xml">
<!-- Remove customer accounts setting from general settings tab -->
<!-- It must not be in the view at all to make sure settings can be saved
(because auth_signup_uninvited is specified as required) -->
<xpath expr="//div[@id='login_documents']" position="replace"></xpath>
</field>
</record>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.website</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="20"/>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="groups_id" eval="[(4, ref('website.group_website_designer'), 0)]"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block" data-string="Website" string="Website" data-key="website" groups="website.group_website_designer">
<div class="row o_settings_container mb-0 mt-0 ms-0 mw-100"
style="background-color: #FEF0D0; margin-bottom: 0px !important; margin-top: 0px !important;">
<div class="col-xs-12 col-md-6 ms-0 o_setting_box">
<div class="o_setting_right_pane border-start-0 ms-0 ps-0">
<div class="content-group">
<div class="row mt8">
<label class="col-lg-3 ps-0" string="Settings of Website" for="website_id"/>
<field name="website_id" options="{'no_open': True, 'no_create': True}" title="Settings on this page will apply to this website"/>
<button name="action_website_create_new" type="object" string="+ New Website" class="col-auto btn-link ms-2" style="line-height: 0.5;"/>
</div>
</div>
</div>
</div>
</div>
<h2>Website Info</h2>
<div class="col-xs-12 row o_settings_container" id="website_info_settings">
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane border-start-0">
<div class="content-group">
<div class="row mt8">
<label class="col-lg-3" string="Domain" for="website_domain"/>
<field name="website_domain" placeholder="https://www.odoo.com" title="Display this website when users visit this domain"/>
</div>
<div class="row mt8" groups="base.group_no_one">
<label class="col-lg-3" string="Country Groups" for="website_country_group_ids"/>
<field name="website_country_group_ids" widget="many2many_tags" title="Once the selection of available websites by domain is done, you can filter by country group. You can have 2 websites with same domain AND a condition on country group to select which website to use."/>
</div>
<div class="row mt8">
<label class="col-lg-3" string="Languages" for="language_ids"/>
<field name="language_ids" widget="many2many_tags" options="{'no_create': True, 'no_open': True}" attrs="{'required': [('website_id', '!=', False)]}" title="Languages available on your website"/>
</div>
<div class="row mt8" attrs="{'invisible': [('website_language_count', '&lt;', 2)]}">
<field name="website_language_count" invisible="1"/>
<label class="col-lg-3" string="Default" for="website_default_lang_id"/>
<field name="website_default_lang_id" options="{'no_open': True, 'no_create': True}" attrs="{'required': [('website_id', '!=', False)]}"/>
</div>
<div class="mt8">
<button type="action" name="%(base.action_view_base_language_install)d" string="Install languages" class="btn-link" icon="fa-arrow-right"/>
</div>
</div>
</div>
</div>
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_right_pane border-start-0">
<div class="content-group">
<div class="row mt8">
<label class="col-lg-3" string="Website Name" for="website_name"/>
<field name="website_name" attrs="{'required': [('website_id', '!=', False)]}"/>
</div>
<div class="row mt8" groups="base.group_multi_company">
<label class="col-lg-3" string="Company" for="website_company_id"/>
<field name="website_company_id" attrs="{'required': [('website_id', '!=', False)]}" title="The company this website belongs to"/>
</div>
<div class="row mt8">
<label class="col-lg-3" string="Favicon" for="favicon"/>
<field name="favicon" widget="image" class="float-start oe_avatar"/>
</div>
</div>
</div>
</div>
</div>
<h2>Email &amp; Marketing</h2>
<div class="row mt16 o_settings_container" id="website_email_marketing">
<div class="col-xs-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_website_livechat"/>
</div>
<div class="o_setting_right_pane" id="livechat_right_pane">
<span class="o_form_label">Livechat</span>
<div class="text-muted">
Alows your visitors to chat with you
</div>
</div>
</div>
<div class="col-xs-12 col-lg-6 o_setting_box" id="website_marketing_automation">
<div class="o_setting_left_pane">
<field name="module_marketing_automation" widget="upgrade_boolean"/>
</div>
<div class="o_setting_right_pane">
<span class="o_form_label">Email Marketing</span>
<div class="text-muted">
Allows to do mass mailing campaigns to contacts
</div>
</div>
</div>
</div>
<h2>Privacy</h2>
<div class="row mt16 o_settings_container" id="website_settings" attrs="{'invisible': [('website_id', '=', False)]}">
<div class="col-12 col-lg-6 o_setting_box" id="website_cookies_bar_setting">
<div class="o_setting_left_pane">
<field name="website_cookies_bar" widget="website_cookiesbar_field"/>
</div>
<div class="o_setting_right_pane">
<label for="website_cookies_bar"/>
<div class="text-muted">
Display a customizable cookies bar on your website
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="shared_user_account_setting" groups="website.group_multi_website">
<div class="o_setting_left_pane">
<field name="shared_user_account"/>
</div>
<div class="o_setting_right_pane">
<label for="shared_user_account"/>
<div class="text-muted">
Accounts are usable across all your multiple websites
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box"
id="website_login_documents"
title=" To send invitations in B2B mode, open a contact or select several ones in list view and click on 'Portal Access Management' option in the dropdown menu *Action*.">
<div class="o_setting_left_pane">
</div>
<div class="o_setting_right_pane">
<label for="auth_signup_uninvited"/>
<div class="text-muted">
Let your customers log in to see their documents
</div>
<div class="mt8">
<field name="auth_signup_uninvited" class="o_light_label" widget="radio" options="{'horizontal': true}" required="True"/>
</div>
<div class="content-group" attrs="{'invisible': [('auth_signup_uninvited','=','b2b')]}">
<div class="mt8">
<button type="object" name="action_open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
</div>
</div>
</div>
</div>
</div>
<h2>SEO</h2>
<div class="row mt16 o_settings_container" id="website_settings" attrs="{'invisible': [('website_id', '=', False)]}">
<div class="col-12 col-lg-offset-6 col-lg-6 o_setting_box" id="google_analytics_setting">
<div class="o_setting_left_pane">
<field name="has_google_analytics"/>
</div>
<div class="o_setting_right_pane">
<label for="has_google_analytics"/>
<div class="text-muted">
Track visits using Google Analytics
</div>
<div class="content-group" attrs="{'invisible': [('has_google_analytics', '=', False)]}">
<div class="row mt16">
<label class="col-lg-3 o_light_label" string="Measurement ID" for="google_analytics_key"/>
<field name="google_analytics_key" placeholder="G-XXXXXXXXXX"
attrs="{'required': [('has_google_analytics', '=', True)]}"/>
</div>
</div>
<div attrs="{'invisible': [('has_google_analytics', '=', False)]}">
<a href="https://www.odoo.com/documentation/master/applications/websites/website/optimize/google_analytics.html"
class="oe_link" target="_blank">
<i class="fa fa-arrow-right"/>
How to get my Measurement ID
</a>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="cdn_setting" title="A CDN helps you serve your website’s content with high availability and high performance to any visitor wherever they are located." groups="base.group_no_one">
<div class="o_setting_left_pane">
<field name="cdn_activated"/>
</div>
<div class="o_setting_right_pane">
<label for="cdn_activated"/>
<div class="text-muted">
Use a CDN to optimize the availability of your website's content
</div>
<div class="content-group" attrs="{'invisible': [('cdn_activated', '=', False)]}">
<div class="row mt16">
<label class="col-lg-3 o_light_label" for="cdn_url"/>
<field name="cdn_url"
attrs="{'required': [('cdn_activated', '=', True)]}"
placeholder="//mycompany.mycdn.com/"
t-translation="off"/>
</div>
<div class="row" >
<label class="col-lg-3 o_light_label" for="cdn_filters"/>
<field name="cdn_filters" class="oe_inline"
attrs="{'required': [('cdn_activated', '=', True)]}"/>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="robots_setting">
<div class="o_setting_right_pane">
<span class="o_form_label">Robots.txt</span>
<div class="text-muted">
Robots.txt: This file tells to search engine crawlers which pages or files they can or can't request from your site.<br/>
</div>
<div class="mt4">
<button type="object" name="action_open_robots" string="Edit robots.txt" class="btn-link" icon="fa-android" noSaveDialog="true"/>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="robots_setting">
<div class="o_setting_right_pane">
<span class="o_form_label">Sitemap</span>
<div class="text-muted mt8">
Sitemap.xml: Help search engine crawlers to find out what pages are present and which have recently changed, and to crawl your site accordingly. This file is automatically generated by Odoo.
</div>
<div class="mt4">
<button type="object" name="action_ping_sitemap" string="Submit sitemap to Google" class='btn-link' icon="fa-google" noSaveDialog="true"/>
</div>
</div>
</div>
<div class="col-12 col-lg-6 o_setting_box" id="social_default_image_setting">
<div class="o_setting_left_pane">
<field name="has_default_share_image"/>
</div>
<div class="o_setting_right_pane">
<label string="Default Social Share Image" for="has_default_share_image"/>
<div class="text-muted">
If set, replaces the website logo as the default social share image.
</div>
<field name="social_default_image" widget="image" class="w-25 mt-2" attrs="{'invisible': [('has_default_share_image', '=', False)]}"/>
</div>
</div>
<div class="col-12 col-lg-offset-6 col-lg-6 o_setting_box" id="google_console_setting">
<div class="o_setting_left_pane">
<field name="has_google_search_console"/>
</div>
<div class="o_setting_right_pane">
<label for="has_google_search_console"/>
<div class="text-muted">
Monitor Google Search results data
</div>
<div class="content-group" attrs="{'invisible': [('has_google_search_console', '=', False)]}">
<div class="row mt16">
<label class="col-lg-3 o_light_label" string="Code" for="google_search_console"/>
<field name="google_search_console" placeholder="google1234567890123456.html"
attrs="{'required': [('has_google_search_console', '=', True)]}"/>
</div>
</div>
<div attrs="{'invisible': [('has_google_search_console', '=', False)]}">
<small class='text-muted'>
<i class="fa fa-info"/>: type some of the first chars after 'google' is enough, we'll guess the rest.
</small>
</div>
</div>
</div>
<div class="col-12 col-lg-offset-6 col-lg-6 o_setting_box" id="plausbile_setting">
<div class="o_setting_left_pane">
<field name="has_plausible_shared_key"/>
</div>
<div class="o_setting_right_pane">
<label for="has_plausible_shared_key"/>
<div class="text-muted">
Use Plausible.io, Simple and privacy-friendly Google Analytics alternative
</div>
<div class="content-group" attrs="{'invisible': [('has_plausible_shared_key', '=', False)]}">
<div class="row mt16">
<label class="col-lg-3 o_light_label" string="Shared Link Auth" for="plausible_shared_key"/>
<field name="plausible_shared_key"
attrs="{'required': [('has_plausible_shared_key', '=', True)]}"/>
</div>
<div class="row mt16">
<label class="col-lg-3 o_light_label" string="Site" for="plausible_site"/>
<field name="plausible_site"
attrs="{'required': [('has_plausible_shared_key', '=', True)]}"/>
</div>
</div>
<div attrs="{'invisible': [('has_plausible_shared_key', '=', False)]}">
<a href="https://www.odoo.com/documentation/master/applications/websites/website/optimize/plausible.html"
class="oe_link" target="_blank">
<i class="fa fa-arrow-right"/>
How to create my Plausible Shared Link
</a>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
<record id="action_website_configuration" model="ir.actions.act_window">
<field name="name">Settings</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'website', 'bin_size': False}</field>
</record>
<menuitem id="menu_website_global_configuration" parent="menu_website_configuration"
sequence="100" name="Configuration" groups="base.group_system"/>
<menuitem name="Settings"
id="menu_website_website_settings"
action="action_website_configuration"
parent="menu_website_global_configuration"
groups="base.group_system"
sequence="10"/>
<menuitem id="menu_website_add_features" parent="website.menu_website_global_configuration"
sequence="20" groups="base.group_system" action="action_website_add_features"/>
<menuitem name="Websites"
id="menu_website_websites_list"
action="action_website_list"
parent="menu_website_global_configuration"
groups="base.group_no_one"
sequence="10"
/>
<menuitem name="Menus"
id="menu_website_menu_list"
action="action_website_menu"
parent="menu_website_global_configuration"
sequence="45"
groups="base.group_no_one"/>
</odoo>