AMBARI-17295 Views in Ambari UI don't render when proxied by Knox (akovalenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/35aee3cd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/35aee3cd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/35aee3cd

Branch: refs/heads/trunk
Commit: 35aee3cdcb6786f8a7b147f651fa7240e0934b8b
Parents: ae9f76f
Author: Aleksandr Kovalenko <akovale...@hortonworks.com>
Authored: Fri Jun 17 16:36:36 2016 +0300
Committer: Aleksandr Kovalenko <akovale...@hortonworks.com>
Committed: Fri Jun 17 20:15:14 2016 +0300

----------------------------------------------------------------------
 .../src/main/resources/ui/admin-web/app/index.html   |  8 ++++----
 .../main/resources/ui/admin-web/app/scripts/app.js   |  9 +++++----
 .../scripts/controllers/ambariViews/ViewUrlCtrl.js   |  3 ++-
 .../controllers/ambariViews/ViewUrlEditCtrl.js       |  3 ++-
 .../scripts/controllers/ambariViews/ViewsEditCtrl.js |  1 +
 .../ui/admin-web/app/scripts/controllers/mainCtrl.js | 15 +++++++++------
 .../stackVersions/StackVersionsListCtrl.js           |  4 ++--
 .../ui/admin-web/app/scripts/i18n.config.js          |  4 ++--
 .../resources/ui/admin-web/app/scripts/routes.js     | 13 +++++++++++++
 .../ui/admin-web/app/views/ambariViews/edit.html     |  9 +++++++--
 .../ui/admin-web/app/views/ambariViews/listUrls.html |  2 +-
 .../resources/ui/admin-web/app/views/leftNavbar.html |  4 ++--
 .../main/resources/ui/admin-web/app/views/main.html  |  4 ++--
 .../ui/admin-web/app/views/stackVersions/list.html   |  2 +-
 ambari-web/app/config.js                             |  1 +
 ambari-web/app/router.js                             |  2 +-
 ambari-web/app/routes/views.js                       |  4 +++-
 .../views/main/admin/stack_upgrade/versions_view.js  |  2 +-
 18 files changed, 59 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/index.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/index.html 
b/ambari-admin/src/main/resources/ui/admin-web/app/index.html
index 25379c1..d603f28 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/index.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/index.html
@@ -48,14 +48,14 @@
   <header class="navbar navbar-static-top navbar-inverse">
     <div class="navbar-inner">
       <div class="container">
-        <a href="/#/main/dashboard" class="logo"><img 
src="/img/logo-white.png" alt="{{'common.apacheAmbari' | translate}}" 
title="{{'common.apacheAmbari' | translate}}"></a>
-        <a href="/#/main/dashboard" class="brand" 
title="{{'common.apacheAmbari' | translate}}">{{'common.ambari' | 
translate}}</a>
+        <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="logo"><img 
src="/img/logo-white.png" alt="{{'common.apacheAmbari' | translate}}" 
title="{{'common.apacheAmbari' | translate}}"></a>
+        <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="brand" 
title="{{'common.apacheAmbari' | translate}}">{{'common.ambari' | 
translate}}</a>
         <ul class="nav navbar-nav navbar-right">
           <li>
             <div class="btn-group navbar-views-dropdown" dropdown 
is-open="viewsdropdown.isopen" ng-mouseover="viewsdropdown.isopen=true" 
ng-mouseout="viewsdropdown.isopen=false">
-              <a href="/#/main/views" ng-click="gotoViewsDashboard()" 
class="dropdown-toggle"><i class="fa fa-th"></i></a>
+              <a href="{{fromSiteRoot('/#/main/views')}}" 
ng-click="gotoViewsDashboard()" class="dropdown-toggle"><i class="fa 
fa-th"></i></a>
               <ul class="dropdown-menu" role="menu">
-                <li ng-repeat="instance in viewInstances"><a 
href="/#/main{{instance.context_path}}" 
ng-click="about()">{{instance.label}}</a></li>
+                <li ng-repeat="instance in viewInstances"><a 
href="{{fromSiteRoot('/#/main/views/' + instance.viewUrl)}}" 
ng-click="about()">{{instance.label}}</a></li>
                 <li ng-show="!viewInstances.length" 
class="disabled"><a>{{'common.noViews' | translate}}</a></li>
               </ul>
             </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js
index b658fb0..39a8e9c 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js
@@ -26,16 +26,17 @@ angular.module('ambariAdminConsole', [
   'pascalprecht.translate'
 ])
 .constant('Settings', {
-       baseUrl: '/api/v1',
+  siteRoot: '{proxy_root}/'.replace(/\{.+\}/g, ''),
+       baseUrl: '{proxy_root}/api/v1'.replace(/\{.+\}/g, ''),
   testMode: (window.location.port == 8000),
   mockDataPrefix: 'assets/data/',
   isLDAPConfigurationSupported: false,
   isLoginActivitiesSupported: false,
   isJWTSupported: false
 })
-.config(['RestangularProvider', '$httpProvider', '$provide', 
function(RestangularProvider, $httpProvider, $provide) {
+.config(['RestangularProvider', '$httpProvider', '$provide', 'Settings', 
function(RestangularProvider, $httpProvider, $provide, Settings) {
   // Config Ajax-module
-  RestangularProvider.setBaseUrl('/api/v1');
+  RestangularProvider.setBaseUrl(Settings.baseUrl);
   RestangularProvider.setDefaultHeaders({'X-Requested-By':'ambari'});
 
   $httpProvider.defaults.headers.post['Content-Type'] = 'plain/text';
@@ -67,7 +68,7 @@ angular.module('ambariAdminConsole', [
 
     function error(response) {
       if (response.status == 403) {
-        window.location = "/";
+        window.location = Settings.siteRoot;
         return;
       }
       return $q.reject(response);

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlCtrl.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlCtrl.js
 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlCtrl.js
index 4a663c4..9a234cc 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlCtrl.js
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlCtrl.js
@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('ViewUrlCtrl',['$scope', 'View', 'Alert', 'Cluster', 
'$routeParams', '$location', 'UnsavedDialog', '$translate', function($scope, 
View, Alert, Cluster, $routeParams, $location, UnsavedDialog, $translate) {
+.controller('ViewUrlCtrl',['$scope', 'View', 'Alert', 'Cluster', 
'$routeParams', '$location', 'UnsavedDialog', '$translate', 'Settings', 
function($scope, View, Alert, Cluster, $routeParams, $location, UnsavedDialog, 
$translate, Settings) {
   var $t = $translate.instant;
   $scope.form = {};
   $scope.constants = {
@@ -115,6 +115,7 @@ angular.module('ambariAdminConsole')
 
       View.updateShortUrl(payload).then(function(urlStatus) {
         Alert.success($t('urls.urlCreated', {
+          siteRoot: Settings.siteRoot,
           viewName:$scope.url.selectedInstance.cname ,
           shortUrl:$scope.url.suffix,
           urlName:$scope.url.urlName

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlEditCtrl.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlEditCtrl.js
 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlEditCtrl.js
index 93edc69..4e961f0 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlEditCtrl.js
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewUrlEditCtrl.js
@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('ViewUrlEditCtrl',['$scope', 'View', 'Alert', 'Cluster', 
'$routeParams', '$location', 'UnsavedDialog', '$translate','ConfirmationModal' 
,function($scope, View, Alert, Cluster, $routeParams, $location, UnsavedDialog, 
$translate,ConfirmationModal) {
+  .controller('ViewUrlEditCtrl',['$scope', 'View', 'Alert', 'Cluster', 
'$routeParams', '$location', 'UnsavedDialog', '$translate','ConfirmationModal', 
'Settings' ,function($scope, View, Alert, Cluster, $routeParams, $location, 
UnsavedDialog, $translate,ConfirmationModal, Settings) {
   var $t = $translate.instant;
   $scope.form = {};
   $scope.constants = {
@@ -55,6 +55,7 @@ angular.module('ambariAdminConsole')
 
           View.editShortUrl(payload).then(function(urlStatus) {
               Alert.success($t('urls.urlUpdated', {
+                  siteRoot: Settings.siteRoot,
                   viewName:$scope.url.view_instance_common_name ,
                   shortUrl:$scope.url.suffix,
                   urlName:$scope.url.url_name

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
index 7bb4039..bd74b16 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
@@ -35,6 +35,7 @@ angular.module('ambariAdminConsole')
       View.getInstance($routeParams.viewId, $routeParams.version, 
$routeParams.instanceId)
         .then(function(instance) {
           $scope.instance = instance;
+          $scope.viewUrl = instance.ViewInstanceInfo.view_name + '/' + 
instance.ViewInstanceInfo.version + '/' + 
instance.ViewInstanceInfo.instance_name;
           $scope.settings = {
             'visible': $scope.instance.ViewInstanceInfo.visible,
             'label': $scope.instance.ViewInstanceInfo.label,

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
index 2878f88..7937658 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
@@ -22,7 +22,7 @@ angular.module('ambariAdminConsole')
   var $t = $translate.instant;
   $scope.signOut = function() {
     Auth.signout().finally(function() {
-      $window.location.pathname = '';
+      $window.location.pathname = Settings.siteRoot;
     });
   };
 
@@ -38,7 +38,7 @@ angular.module('ambariAdminConsole')
     .then(function(data) {
       var auth = !!data.data && !!data.data.items ? 
data.data.items.map(function (a){return a.AuthorizationInfo.authorization_id}) 
: [];
       if(auth.indexOf('AMBARI.RENAME_CLUSTER') == -1){
-        $window.location = "/#/main/dashboard";
+        $window.location = $rootScope.fromSiteRoot("/#/main/dashboard");
       }
     });
 
@@ -84,12 +84,15 @@ angular.module('ambariAdminConsole')
 
   $scope.updateInstances = function () {
     View.getAllVisibleInstance().then(function(instances) {
-      $scope.viewInstances = instances;
+      $scope.viewInstances = instances.map(function(i) {
+        i.viewUrl = i.view_name + '/' + i.version + '/' + i.instance_name;
+        return i;
+      });
     });
   };
 
   $scope.gotoViewsDashboard =function() {
-    window.location = '/#/main/views';
+    window.location = Settings.siteRoot + '#/main/views';
   };
 
   $scope.$root.$on('instancesUpdate', function (event, data) {
@@ -137,7 +140,7 @@ angular.module('ambariAdminConsole')
               $rootScope.timeoutModal.close();
               delete $rootScope.timeoutModal;
               Auth.signout().finally(function() {
-                $window.location.pathname = '';
+                $window.location.pathname = Settings.siteRoot;
               });
             };
             $scope.countDown = function() {
@@ -145,7 +148,7 @@ angular.module('ambariAdminConsole')
               $scope.$apply();
               if ($scope.remainTime == 0) {
                 Auth.signout().finally(function() {
-                  $window.location.pathname = '';
+                  $window.location.pathname = Settings.siteRoot;
                 });
               }
             };

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
index 8b697f8..34daa29 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsListCtrl.js
@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-  .controller('StackVersionsListCtrl', ['$scope', 'Cluster', 'Stack', 
'$routeParams', '$translate', function ($scope, Cluster, Stack, $routeParams, 
$translate) {
+  .controller('StackVersionsListCtrl', ['$scope', 'Cluster', 'Stack', 
'$routeParams', '$translate', 'Settings', function ($scope, Cluster, Stack, 
$routeParams, $translate, Settings) {
     var $t = $translate.instant;
     $scope.getConstant = function (key) {
       return $t('common.' + key).toLowerCase();
@@ -65,7 +65,7 @@ angular.module('ambariAdminConsole')
     };
 
     $scope.goToCluster = function() {
-      window.location.replace('/#/main/admin/stack/versions');
+      window.location.replace(Settings.siteRoot + 
'#/main/admin/stack/versions');
     };
 
     $scope.clearFilters = function () {

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
index 6fe46dc..b4138b3 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
@@ -280,8 +280,8 @@ angular.module('ambariAdminConsole')
       'noViewInstances':'No view instances',
       'none':'None',
       'change':'Change',
-      'urlCreated':'Created short URL <a 
href="/#/main/view/{{viewName}}/{{shortUrl}}">{{urlName}}</a>',
-      'urlUpdated':'Updated short URL <a 
href="/#/main/view/{{viewName}}/{{shortUrl}}">{{urlName}}</a>'
+      'urlCreated':'Created short URL <a 
href="{{siteRoot}}#/main/view/{{viewName}}/{{shortUrl}}">{{urlName}}</a>',
+      'urlUpdated':'Updated short URL <a 
href="{{siteRoot}}#/main/view/{{viewName}}/{{shortUrl}}">{{urlName}}</a>'
     },
 
     'clusters': {

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js 
b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js
index 96bcb4c..8c926ec 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js
@@ -196,4 +196,17 @@ angular.module('ambariAdminConsole')
       e.preventDefault();
     }
   });
+
+  /**
+   * Method using to generate full URI from site root, this method should be 
used
+   * along with all 'href' attribute or methods which invoke redirect to 
Ambari Web.
+   * This method is useful to determine actual site root when ambari run under 
proxy server.
+   *
+   * @param {string} url
+   * @returns {string}
+   */
+  $rootScope.fromSiteRoot = function(url) {
+    var path = url[0] === '/' ? url.substring(1) : url;
+    return Settings.siteRoot + path;
+  };
 }]);

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html
index f6facb5..69eb1c1 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html
@@ -18,7 +18,12 @@
 <div class="clearfix">
   <ol class="breadcrumb pull-left">
     <li><a href="#/views">{{'common.views' | translate}}</a></li>
-    <li class="active">{{instance.ViewInstanceInfo.label}} <a 
class="gotoinstance" ng-show="instance.ViewInstanceInfo.visible" 
href="/#/main{{instance.ViewInstanceInfo.context_path}}">{{'views.goToInstance' 
| translate}}</a></li>
+    <li class="active">{{instance.ViewInstanceInfo.label}}
+      <a class="gotoinstance" ng-show="instance.ViewInstanceInfo.visible"
+         href="{{fromSiteRoot('/#/main/views/' + viewUrl)}}">
+        {{'views.goToInstance' | translate}}
+      </a>
+    </li>
   </ol>
   <div class="pull-right top-margin-4" 
ng-switch="instance.ViewInstanceInfo.static">
     <button ng-switch-when="true" class="btn disabled btn-default 
btn-delete-instance" tooltip="{{'views.alerts.cannotDeleteStaticInstance' | 
translate}}">{{'common.delete' | translate: '{term: instanceType}'}}</button>
@@ -83,7 +88,7 @@
 
           <div class="col-sm-9">
             <div ng-if="settings.shortUrl">
-            <p class="form-control-static"><a target="_blank" 
href="/#/main/view/{{instance.ViewInstanceInfo.view_name}}/{{settings.shortUrl}}"
 
ng-if="settings.shortUrl">/main/view/{{instance.ViewInstanceInfo.view_name}}/{{settings.shortUrl}}&nbsp;<i
 class="fa fa-external-link" aria-hidden="true"></i></a>
+            <p class="form-control-static"><a target="_blank" 
href="{{fromSiteRoot('/#/main/view/' + instance.ViewInstanceInfo.view_name + 
'/' + settings.shortUrl)}}" 
ng-if="settings.shortUrl">/main/view/{{instance.ViewInstanceInfo.view_name}}/{{settings.shortUrl}}&nbsp;<i
 class="fa fa-external-link" aria-hidden="true"></i></a>
              &nbsp;<a ng-hide="editDetailsSettingsDisabled" 
href="javascript:void(0)" ng-click="deleteShortURL(settings.shortUrlName)" 
class="alert-link">{{'common.delete' | translate }}</a>
              </p>
           </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
index 4654147..82a4dec 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
@@ -81,7 +81,7 @@
                 <a 
href="#/urls/edit/{{url.ViewUrlInfo.url_name}}">{{url.ViewUrlInfo.url_name}}</a>
             </td>
             <td>
-                <a target="_blank" 
href="/#/main/view/{{url.ViewUrlInfo.view_instance_common_name}}/{{url.ViewUrlInfo.url_suffix}}">/main/view/{{url.ViewUrlInfo.view_instance_common_name}}/{{url.ViewUrlInfo.url_suffix}}
+                <a target="_blank" href="{{fromSiteRoot('/#/main/view/' + 
url.ViewUrlInfo.view_instance_common_name + '/' + 
url.ViewUrlInfo.url_suffix)}}">/main/view/{{url.ViewUrlInfo.view_instance_common_name}}/{{url.ViewUrlInfo.url_suffix}}
                     &nbsp;<i class="fa fa-external-link" 
aria-hidden="true"></i></a>
 
             </td>

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
index 2649eb0..f7d0215 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
@@ -67,9 +67,9 @@
           <li ng-class="{active: isActive('clusters.manageAccess') || 
isActive('clusters.userAccessList')}">
             <a 
href="#/clusters/{{cluster.Clusters.cluster_name}}/manageAccess" 
class="permissions">{{'common.roles' | translate}}</a>
           </li>
-          <li><a href="#/dashboard"  
class="gotodashboard">{{'common.goToDashboard' | translate}}</a></li>
+          <li><a href="{{fromSiteRoot('/#/dashboard')}}" 
class="gotodashboard">{{'common.goToDashboard' | translate}}</a></li>
         </ul>
-        <span class="cluster-installation-progress-label" 
ng-show="cluster.Clusters.provisioning_state == 'INIT'"><a 
href="/#/">{{'common.clusterCreationInProgress' | translate}}</a></span>
+        <span class="cluster-installation-progress-label" 
ng-show="cluster.Clusters.provisioning_state == 'INIT'"><a 
href="{{fromSiteRoot('/#/')}}">{{'common.clusterCreationInProgress' | 
translate}}</a></span>
       </div>
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
index f9e6e63..d62ae15 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
@@ -34,7 +34,7 @@
         </span>
         <span>
           <a ng-show="cluster.Clusters.provisioning_state != 'INSTALLED'" href 
class="btn btn-primary go-dashboard-button" 
ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' 
">{{'common.goToDashboard' | translate}}</a>
-          <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'" 
href="/#/main/dashboard/metrics" class="btn btn-primary go-dashboard-button" 
ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' 
">{{'common.goToDashboard' | translate}}</a>
+          <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'" 
href="{{fromSiteRoot('/#/main/dashboard/metrics')}}" class="btn btn-primary 
go-dashboard-button" ng-disabled="cluster.Clusters.provisioning_state != 
'INSTALLED' ">{{'common.goToDashboard' | translate}}</a>
         </span>
         </div>
       </div>
@@ -42,7 +42,7 @@
         <h4 class="title">{{'main.createCluster.title' | translate}}</h4>
         <div class="description">{{'main.createCluster.description' | 
translate}}</div>
         <div class="glyphicon glyphicon-cloud"></div>
-        <div class="buttons"> <a href="/#/installer/step0" class="btn 
btn-primary create-cluster-button">{{'main.createCluster.launchInstallWizard' | 
translate}}</a></div>
+        <div class="buttons"> <a href="{{fromSiteRoot('/#/installer/step0')}}" 
class="btn btn-primary 
create-cluster-button">{{'main.createCluster.launchInstallWizard' | 
translate}}</a></div>
       </div>
 
         <!--Manage Users and groups-->

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
----------------------------------------------------------------------
diff --git 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
index 10d4a82..ea577f6 100644
--- 
a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
+++ 
b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
@@ -73,7 +73,7 @@
         <span>{{repo.repository_version}}</span>
       </td>
       <td class="col-small">
-        <a href="/#/main/admin/stack/versions" ng-show="repo.cluster">
+        <a href="{{fromSiteRoot('/#/main/admin/stack/versions')}}" 
ng-show="repo.cluster">
           {{repo.cluster}}
         </a>
         <span ng-show="!repo.cluster">

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-web/app/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/config.js b/ambari-web/app/config.js
index fe970b1..9dbb9f4 100644
--- a/ambari-web/app/config.js
+++ b/ambari-web/app/config.js
@@ -26,6 +26,7 @@ App.skipBootstrap = false;
 App.alwaysGoToInstaller = false;
 App.testEnableSecurity = true; // By default enable security is tested; 
turning it false tests disable security
 App.testNameNodeHA = true;
+App.appURLRoot = '{proxy_root}/'.replace(/\{.+\}/g, ''); // determines 
application root path name, not related to hash route
 App.apiPrefix = '/api/v1';
 App.defaultStackVersion = 'HDP-2.3';
 App.defaultWindowsStackVersion = 'HDPWIN-2.1';

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-web/app/router.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/router.js b/ambari-web/app/router.js
index a057215..d367ce3 100644
--- a/ambari-web/app/router.js
+++ b/ambari-web/app/router.js
@@ -631,7 +631,7 @@ App.Router = Em.Router.extend({
         }),
         sortedMappedVersions = mappedVersions.sort(),
         latestVersion = sortedMappedVersions[sortedMappedVersions.length-1];
-      window.location.replace('/views/ADMIN_VIEW/' + latestVersion + 
'/INSTANCE/#/');
+      window.location.replace(App.appURLRoot +  'views/ADMIN_VIEW/' + 
latestVersion + '/INSTANCE/#/');
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-web/app/routes/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/views.js b/ambari-web/app/routes/views.js
index c50690c..1d19279 100644
--- a/ambari-web/app/routes/views.js
+++ b/ambari-web/app/routes/views.js
@@ -51,7 +51,9 @@ module.exports = Em.Route.extend({
       }
 
       router.get('mainViewsController').dataLoading().done(function() {
-        var content = 
App.router.get('mainViewsController.ambariViews').findProperty('href', href);
+        var content = 
App.router.get('mainViewsController.ambariViews').filter(function(i) {
+          return Em.get(i, 'href').endsWith(href);
+        })[0];
         if (content) content.set('viewPath', viewPath);
         router.get('mainController').connectOutlet('mainViewsDetails', 
content);
       });

http://git-wip-us.apache.org/repos/asf/ambari/blob/35aee3cd/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js 
b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
index bdf8d7d..31ef677 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js
@@ -190,7 +190,7 @@ App.MainAdminStackVersionsView = Em.View.extend({
             }),
             sortedMappedVersions = mappedVersions.sort(),
             latestVersion = 
sortedMappedVersions[sortedMappedVersions.length-1];
-            window.location.replace('/views/ADMIN_VIEW/' + latestVersion + 
'/INSTANCE/#/stackVersions');
+            window.location.replace(App.appURLRoot + 'views/ADMIN_VIEW/' + 
latestVersion + '/INSTANCE/#/stackVersions');
         }
       });
     },

Reply via email to