From a8cb52afee9d07b0966938d7c440dc5682b7f807 Mon Sep 17 00:00:00 2001 From: Renaud Thiry Date: Wed, 28 Dec 2022 13:42:14 +0000 Subject: [PATCH] [FIX] web: keep full urls in settings The function that adds the missing url root on documentation links uses a regex in startsWith, which is not supported. startsWith is replaced with ``regex.test`` which will succeed if the regex has any match. Which is fine because we use a '^' to ensure it *starts* with https task-3079113 closes odoo/odoo#110443 X-original-commit: fdaeaf69c1770edf3f33e32947326d1ebe42820e Signed-off-by: Jorge Pinna Puissant (jpp) --- .../webclient/settings_form_view/settings/setting.js | 4 +++- .../settings_form_view/settings_form_view_tests.js | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/webclient/settings_form_view/settings/setting.js b/addons/web/static/src/webclient/settings_form_view/settings/setting.js index 20cf493b4d5..719443aabb6 100644 --- a/addons/web/static/src/webclient/settings_form_view/settings/setting.js +++ b/addons/web/static/src/webclient/settings_form_view/settings/setting.js @@ -6,6 +6,8 @@ import { session } from "@web/session"; import { FormLabelHighlightText } from "../highlight_text/form_label_highlight_text"; import { Component, useState } from "@odoo/owl"; + +const LINK_REGEX = new RegExp("^https?://"); export class Setting extends Component { setup() { this.state = useState({ @@ -56,7 +58,7 @@ export class Setting extends Component { } get url() { - if (this.props.documentation.startsWith("^https?://")) { + if (LINK_REGEX.test(this.props.documentation)) { return this.props.documentation; } else { const serverVersion = session.server_version.includes("alpha") diff --git a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js index 84e7f734340..ba3234a46b6 100644 --- a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js +++ b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js @@ -89,7 +89,7 @@ QUnit.module("SettingsFormView", (hooks) => { - + @@ -139,10 +139,16 @@ QUnit.module("SettingsFormView", (hooks) => { target, ".app_settings_block:not(.d-none) .app_settings_header .o_setting_box" ); + const docLinks = [...target.querySelectorAll(".o_setting_box a")]; + assert.strictEqual(docLinks.length, 2); assert.strictEqual( - target.querySelector(".o_setting_box a").href, + docLinks[0].href, "https://www.odoo.com/documentation/1.0/applications/technical/web/settings/this_is_a_test.html" ); + assert.strictEqual( + docLinks[1].href, + "https://www.odoo.com/documentation/1.0/applications/technical/web/settings/this_is_another_test.html" + ); await editSearch(target, "Hello there"); await execTimeouts();