diff options
author | Tatiana Ovchinnikova <t.v.ovtchinnikova@gmail.com> | 2020-11-30 14:00:49 -0600 |
---|---|---|
committer | Tatiana Ovchinnikova <t.v.ovtchinnikova@gmail.com> | 2021-02-18 20:42:44 +0000 |
commit | 17d48024ecd4e923f4fb201a8c8325a16af04c80 (patch) | |
tree | 05d2228609996dafe89ad705aff7819a6fbd4d1e | |
parent | f6ef2e4e4e4cce030e5ef2f7799bff4e968af03a (diff) | |
download | horizon-17d48024ecd4e923f4fb201a8c8325a16af04c80.tar.gz |
Add WEBROOT to ngdetails navigation
Default index URL for angular details page doesn't consider WEBROOT
while building navigations. That is why refreshing details page or
opening it in a new tab works perfectly when WEBROOT is "/" and fails
for apache deployment where WEBROOT is "/dashboard/".
This patch adds WEBROOT to index URL and builds a proper navigation.
Closes-Bug: #1902821
Change-Id: Id609e5499cc8f53dbae36febc945568e45d291f3
(cherry picked from commit f7442851c4b85a6a091635f0930c07dbd43cf8fb)
(cherry picked from commit cd4d3aa1a6db93305d88387e1ea163947a6b62f6)
3 files changed, 23 insertions, 2 deletions
diff --git a/horizon/static/framework/util/navigations/navigations.service.js b/horizon/static/framework/util/navigations/navigations.service.js index 8da8746c0..5d7a3571f 100644 --- a/horizon/static/framework/util/navigations/navigations.service.js +++ b/horizon/static/framework/util/navigations/navigations.service.js @@ -25,6 +25,7 @@ collapseAllNavigation: collapseAllNavigation, expandNavigationByUrl: expandNavigationByUrl, setBreadcrumb: setBreadcrumb, + setAbsoluteURI: setAbsoluteURI, isNavigationExists: isNavigationExists }; @@ -107,6 +108,14 @@ }); } + /* set absolute uri */ + function setAbsoluteURI(webroot, url) { + if (webroot.endsWith("/") && url.startsWith("/")) { + webroot = webroot.slice(0, -1); + } + return webroot + url; + } + /* check whether navigation exists from url */ function isNavigationExists(url) { return angular.element("a.openstack-panel[href='" + url + "']").length ? true : false; diff --git a/horizon/static/framework/util/navigations/navigations.service.spec.js b/horizon/static/framework/util/navigations/navigations.service.spec.js index 44c3e3bfd..3326374af 100644 --- a/horizon/static/framework/util/navigations/navigations.service.spec.js +++ b/horizon/static/framework/util/navigations/navigations.service.spec.js @@ -158,6 +158,13 @@ }); }); + describe('setAbsoluteURI', function() { + it('sets absolute uri', function() { + var url = service.setAbsoluteURI('/dashboard/', '/project/images/'); + expect(url).toBe('/dashboard/project/images/'); + }); + }); + describe('isNavigationExists', function() { it('returns true if navigation for specified URL exists', function() { var result = service.isNavigationExists('/project/images/'); diff --git a/horizon/static/framework/widgets/details/routed-details-view.controller.js b/horizon/static/framework/widgets/details/routed-details-view.controller.js index 739dc5d7e..cea3e4102 100644 --- a/horizon/static/framework/widgets/details/routed-details-view.controller.js +++ b/horizon/static/framework/widgets/details/routed-details-view.controller.js @@ -28,7 +28,8 @@ 'horizon.framework.widgets.modal-wait-spinner.service', '$location', '$q', - '$routeParams' + '$routeParams', + '$window' ]; function controller( @@ -39,7 +40,8 @@ spinnerService, $location, $q, - $routeParams + $routeParams, + $window ) { var ctrl = this; @@ -69,6 +71,9 @@ // get defaultIndexUrl var url = resourceType.getDefaultIndexUrl(); + // add webroot + var webroot = $window.WEBROOT; + url = navigationsService.setAbsoluteURI(webroot, url); // if querystring has 'nav' parameter, overwrite the url var query = $location.search(); if (query.hasOwnProperty("nav")) { |