Skip to content

Commit 9dc83a6

Browse files
committed
maure urls
1 parent 70fe30d commit 9dc83a6

File tree

1 file changed

+46
-16
lines changed
  • extensions/odoo_theme/static/js

1 file changed

+46
-16
lines changed

extensions/odoo_theme/static/js/menu.js

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,17 @@
9292
* Test order:
9393
* 1. /documentation/15.0/fr/administration/install/install.html
9494
* 2. /documentation/15.0/administration/install/install.html
95-
* 3. /documentation/15.0/fr/
96-
* 4. /documentation/15.0/
97-
* 5. /documentation/
95+
* 3. /documentation/15.0/fr/administration/install.html
96+
* 4. /documentation/15.0/administration/install.html
97+
* 5. /documentation/15.0/fr/administration.html
98+
* 6. /documentation/15.0/administration.html
99+
* 7. /documentation/15.0/fr/
100+
* 8. /documentation/15.0/
101+
* 9. /documentation/
98102
*/
99103
const _findClosestValidUrl = (url) => {
100104
const fragments = url.split("/");
101-
let path = "";
105+
let originalPath = "";
102106
let version = "";
103107
let language = "";
104108
for (let f of fragments.reverse()){
@@ -108,29 +112,55 @@
108112
} else if (f.match(/((^[a-z]{2}_[A-Z]{2})$|^([a-z]{2})$)/)) {
109113
language = f;
110114
} else {
111-
path = (path ? f + "/" + path : f);
115+
originalPath = (originalPath ? f + "/" + originalPath : f);
112116
}
113117
}
114-
const urls = [url]
118+
const urls = [];
119+
const paths = originalPath.split("/");
120+
121+
while (paths.length) {
122+
if (!paths[paths.length-1].endsWith(".html"))
123+
paths[paths.length-1] += ".html";
124+
125+
if (version && language)
126+
// -> 15.0/fr/administration.html
127+
// -> 15.0/administration.html
128+
urls.push(
129+
url.replace(version + "/" + language + "/" + originalPath,
130+
version + "/" + language + "/" + paths.join("/")),
131+
url.replace(version + "/" + language + "/" + originalPath,
132+
version + "/" + paths.join("/")));
133+
else if (version && !language)
134+
// -> 15.0/administration.html
135+
urls.push(
136+
url.replace(version + "/" + originalPath,
137+
version + "/" + paths.join("/")));
138+
else if (!version && !language)
139+
// -> administration.html
140+
urls.push(
141+
url.replace(originalPath,
142+
paths.join("/")));
143+
144+
paths.pop();
145+
}
146+
115147
if (version && language)
148+
// -> 15.0/index.html
149+
// -> index.html
116150
urls.push(
117-
url.replace(version + "/" + language + "/" + path,
118-
version + "/" + path),
119-
url.replace(version + "/" + language + "/" + path,
120-
version + "/" + language + "/index.html"),
121-
url.replace(version + "/" + language + "/" + path,
151+
url.replace(version + "/" + language + "/" + originalPath,
122152
version + "/index.html"),
123-
url.replace(version + "/" + language + "/" + path,
153+
url.replace(version + "/" + language + "/" + originalPath,
124154
"index.html"));
125155
else if (version && !language)
156+
// -> index.html
126157
urls.push(
127-
url.replace(version + "/" + path,
128-
version + "/index.html"),
129-
url.replace(version + "/" + path,
158+
url.replace(version + "/" + originalPath,
130159
"index.html"));
131160
else if (!version && !language)
161+
// -> index.html
132162
urls.push(
133-
url.replace(path,
163+
url.replace(originalPath,
134164
"index.html"));
135165

136166
_testFetchUrl(urls);

0 commit comments

Comments
 (0)