From f6cc55389e2be9fe1c22014e1c95af9cdf76b588 Mon Sep 17 00:00:00 2001 From: Sarah Schneider Date: Wed, 9 Dec 2020 15:05:46 -0500 Subject: [PATCH] support full version name in link as well as plan --- lib/rewrite-local-links.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/rewrite-local-links.js b/lib/rewrite-local-links.js index 2cd18221c0..59844d5d4a 100644 --- a/lib/rewrite-local-links.js +++ b/lib/rewrite-local-links.js @@ -2,7 +2,9 @@ const externalRedirects = Object.keys(require('./redirects/external-sites')) const pathUtils = require('./path-utils') const assert = require('assert') const nonEnterpriseDefaultVersion = require('./non-enterprise-default-version') -const supportedPlans = Object.values(require('./all-versions')).map(v => v.plan) +const allVersions = require('./all-versions') +const supportedVersions = Object.keys(allVersions) +const supportedPlans = Object.values(allVersions).map(v => v.plan) // Content authors write links like `/some/article/path`, but they need to be // rewritten on the fly to match the current language and page version @@ -27,9 +29,13 @@ function getNewHref (link, languageCode, version) { let newHref - // If the link has a hardcoded plan name in it (e.g., /enterprise-server/rest/reference/oauth-authorizations), - // only rewrite it with a language code - if (supportedPlans.includes(href.split('/')[1])) { + // If the link has a hardcoded plan or version in it, do not update the version, just add the language code + // Examples: + // /enterprise-server@2.20/rest/reference/oauth-authorizations + // /enterprise-server/rest/reference/oauth-authorizations (this redirects to the latest version) + // /enterprise-server@latest/rest/reference/oauth-authorizations (this redirects to the latest version) + const firstLinkSegment = href.split('/')[1] + if (supportedPlans.includes(firstLinkSegment) || supportedVersions.includes(firstLinkSegment) || firstLinkSegment === 'enterprise-server@latest') { newHref = pathUtils.getPathWithLanguage(href, languageCode) }