Mark admin navigation link URLs without included base URLs

With Ifa3e19c509, the admin navigation links became a mixture of URLs
generated by the new router abstraction and older URLs that are
hard-coded. Whereas router-generated links already include the base URL,
the base must be added to hard-coded links. With this change, boolean
properties are added so that the admin view can determine whether the
link already includes the base URL and avoid adding it twice.

Bug: Issue 7612
Change-Id: I6ed33aeb147a1bff924c0a684ed8a0eb6ad71ad1
This commit is contained in:
Wyatt Allen
2017-10-30 14:53:15 -07:00
parent 2f5399eb05
commit eeab0cee39
2 changed files with 18 additions and 2 deletions

View File

@@ -14,8 +14,11 @@
(function() {
'use strict';
// Note: noBaseUrl: true is set on entries where the URL is not yet supported
// by router abstraction.
const ADMIN_LINKS = [{
name: 'Projects',
noBaseUrl: true,
url: '/admin/projects',
view: 'gr-project-list',
viewableToAll: true,
@@ -23,6 +26,7 @@
}, {
name: 'Groups',
section: 'Groups',
noBaseUrl: true,
url: '/admin/groups',
view: 'gr-admin-group-list',
children: [],
@@ -30,6 +34,7 @@
name: 'Plugins',
capability: 'viewPlugins',
section: 'Plugins',
noBaseUrl: true,
url: '/admin/plugins',
view: 'gr-plugin-list',
}];
@@ -113,11 +118,13 @@
linkCopy.subsection = {
name: this._projectName,
view: 'gr-project',
noBaseUrl: true,
url: `/admin/projects/${this.encodeURL(this._projectName, true)}`,
children: [{
name: 'Access',
detailType: 'access',
view: 'gr-project-access',
noBaseUrl: true,
url: `/admin/projects/` +
`${this.encodeURL(this._projectName, true)},access`,
},
@@ -125,6 +132,7 @@
name: 'Commands',
detailType: 'commands',
view: 'gr-project-commands',
noBaseUrl: true,
url: `/admin/projects/` +
`${this.encodeURL(this._projectName, true)},commands`,
},
@@ -132,6 +140,7 @@
name: 'Branches',
detailType: 'branches',
view: 'gr-project-detail-list',
noBaseUrl: true,
url: `/admin/projects/` +
`${this.encodeURL(this._projectName, true)},branches`,
},
@@ -139,6 +148,7 @@
name: 'Tags',
detailType: 'tags',
view: 'gr-project-detail-list',
noBaseUrl: true,
url: `/admin/projects/` +
`${this.encodeURL(this._projectName, true)},tags`,
}],
@@ -236,7 +246,7 @@
_computeLinkURL(link) {
if (!link || typeof link.url === 'undefined') { return ''; }
if (link.target) {
if (link.target || !link.noBaseUrl) {
return link.url;
}
return this._computeRelativeURL(link.url);

View File

@@ -59,8 +59,14 @@ limitations under the License.
test('link URLs', () => {
assert.equal(
element._computeLinkURL({url: '/test'}),
element._computeLinkURL({url: '/test', noBaseUrl: true}),
'//' + window.location.host + '/test');
sandbox.stub(element, 'getBaseUrl').returns('/foo');
assert.equal(
element._computeLinkURL({url: '/test', noBaseUrl: true}),
'//' + window.location.host + '/foo/test');
assert.equal(element._computeLinkURL({url: '/test'}), '/test');
assert.equal(
element._computeLinkURL({url: '/test', target: '_blank'}),
'/test');