[Bf-docboard-svn] bf-manual: [8356] trunk/blender_docs/resources/theme/js/version_switch.js: version switch: refactor build list: url api & path array

Tobias Heinke noreply at blender.org
Wed Sep 1 20:17:45 CEST 2021


Revision: 8356
          https://developer.blender.org/rBM8356
Author:   TobiasH
Date:     2021-09-01 20:17:44 +0200 (Wed, 01 Sep 2021)
Log Message:
-----------
version switch: refactor build list: url api & path array

Modified Paths:
--------------
    trunk/blender_docs/resources/theme/js/version_switch.js

Modified: trunk/blender_docs/resources/theme/js/version_switch.js
===================================================================
--- trunk/blender_docs/resources/theme/js/version_switch.js	2021-08-31 00:16:11 UTC (rev 8355)
+++ trunk/blender_docs/resources/theme/js/version_switch.js	2021-09-01 18:17:44 UTC (rev 8356)
@@ -52,13 +52,13 @@
 		this.$btn.addClass("wait");
 		this.loadVL(this);
 	} else {
-		this.afterload();
+		this.afterLoad();
 	}
 },
 loadVL: function(that) {
 	$.getJSON(versionsFileUrl, function(data) {
 		all_versions = data;
-		that.afterload();
+		that.afterLoad();
 		return true;
 	})
 	.fail( function() {
@@ -67,7 +67,7 @@
 		return false;
 	});
 },
-afterload: function() {
+afterLoad: function() {
 	var release = DOCUMENTATION_OPTIONS.VERSION;
 	const m = release.match(/\d\.\d+/g);
 	if (m) {release = m[0];}
@@ -124,7 +124,13 @@
 	}
 },
 buildList: function(v, l) {
-	var neutral_url = this.getNeutral();
+	var url = new URL(window.location.href);
+	let pathSplit = ["", "manual", l, v];
+	if (url.pathname.startsWith("/manual/")) {
+		pathSplit.append(url.pathname.split('/').slice(4).join('/'));
+	} else {
+		pathSplit.append(url.pathname.substring(1));
+	}
 	if(this.type) {
 		var dyn = all_versions;
 		var cur = v;
@@ -139,22 +145,14 @@
 		if (ix === cur) {
 			buf.push(' class="selected" tabindex="-1" role="presentation"><span tabindex="-1" role="menuitem" aria-current="page">' + title + '</spanp></li>');
 		} else {
-			if(that.type) {
-				v = ix;
-			} else {
-				l = ix;
-			}
-			var new_url = neutral_url.replace(/\/manual\//, '/manual/' + l + '/' + v + '/');
-			buf.push(' tabindex="-1" role="presentation"><a href ="' + new_url + '" tabindex="-1">' + title + '</a></li>');
+			pathSplit[2 + that.type] = ix;
+			var href = new URL(url);
+			var href.pathname = pathSplit.join('/');
+			buf.push(' tabindex="-1" role="presentation"><a href ="' + href + '" tabindex="-1">' + title + '</a></li>');
 		}
 	});
 	return buf.join('');
 },
-getNeutral: function() {
-	var url = window.location.href;
-	var url_re = /\/manual\/([\w|\-|\.]*\/(?:dev|latest|\d\.\d[\w\d\.]*))\//;
-	return url.replace(url_re, "/manual/");
-},
 getNamed: function(v) {
 	$.each(all_versions, function(ix, title) {
 		if (ix === "dev" || ix === "latest") {



More information about the Bf-docboard-svn mailing list