Pārlūkot izejas kodu

HUE-6091 [core] Ported useradmin to page.js

Enrico Berti 8 gadi atpakaļ
vecāks
revīzija
0adb6a1

+ 2 - 2
apps/useradmin/src/useradmin/templates/add_ldap_users.mako

@@ -32,7 +32,7 @@ ${ layout.menubar(section='users') }
     <h1 class="card-heading simple">${_('Hue Users - Add/Sync LDAP user')}</h1>
     <br/>
 
-    <form id="syncForm" method="POST" class="form form-horizontal" autocomplete="off">
+    <form id="syncForm" action="${ url('useradmin.views.add_ldap_users') }" method="POST" class="form form-horizontal" autocomplete="off">
       ${ csrf_token(request) | n,unicode }
       <fieldset>
         % for field in form.fields:
@@ -50,7 +50,7 @@ ${ layout.menubar(section='users') }
         % else:
           <input type="submit" class="btn btn-primary" value="${_('Add/Sync user')}"/>
         % endif
-        <a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('useradmin.views.list_users') + "')" or url('useradmin.views.list_users') }" class="btn">${_('Cancel')}</a>
+        <a href="${ url('useradmin.views.list_users') }" class="btn">${_('Cancel')}</a>
       </div>
     </form>
   </div>

+ 4 - 4
apps/useradmin/src/useradmin/templates/layout.mako

@@ -61,11 +61,11 @@ def is_selected(section, matcher):
                 </a>
               </li>
               %if user.is_superuser:
-                <li class="${is_selected(section, 'users')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '/useradmin/users')" or "/useradmin/users" }">${_('Users')}</a></li>
-                <li class="${is_selected(section, 'groups')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '/useradmin/groups')" or "/useradmin/groups" }">${_('Groups')}</a></li>
-                <li class="${is_selected(section, 'permissions')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '/useradmin/permissions')" or "/useradmin/permissions" }">${_('Permissions')}</a></li>
+                <li class="${is_selected(section, 'users')}"><a href="${ url('useradmin.views.list_users') }">${_('Users')}</a></li>
+                <li class="${is_selected(section, 'groups')}"><a href="${ url('useradmin.views.list_groups') }">${_('Groups')}</a></li>
+                <li class="${is_selected(section, 'permissions')}"><a href="${ url('useradmin.views.list_permissions') }">${_('Permissions')}</a></li>
                 %if conf.USE_DEFAULT_CONFIGURATION.get():
-                <li class="${is_selected(section, 'configurations')}"><a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '/useradmin/configurations')" or "/useradmin/configurations" }">${_('Configurations')}</a></li>
+                <li class="${is_selected(section, 'configurations')}"><a href="${ url('useradmin.views.list_configurations') }">${_('Configurations')}</a></li>
                 %endif
               %endif
             </ul>

+ 2 - 2
apps/useradmin/src/useradmin/templates/list_users.mako

@@ -42,11 +42,11 @@ ${layout.menubar(section='users')}
       <%def name="creation()">
         %if user.is_superuser:
             % if not is_ldap_setup:
-              <a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('useradmin.views.edit_user') + "')" or url('useradmin.views.edit_user') }" class="btn"><i class="fa fa-user"></i> ${_('Add user')}</a>
+              <a href="${ url('useradmin.views.edit_user') }" class="btn"><i class="fa fa-user"></i> ${_('Add user')}</a>
             %endif
 
             % if is_ldap_setup:
-            <a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('useradmin.views.add_ldap_users') + "')" or url('useradmin.views.add_ldap_users') }" class="btn"><i class="fa fa-briefcase"></i> ${_('Add/Sync LDAP user')}</a>
+            <a href="${ url('useradmin.views.add_ldap_users') }" class="btn"><i class="fa fa-briefcase"></i> ${_('Add/Sync LDAP user')}</a>
             <a href="javascript:void(0)" class="btn confirmationModal"
                data-confirmation-url="${ url('useradmin.views.sync_ldap_users_groups') }"><i
                 class="fa fa-refresh"></i> ${_('Sync LDAP users/groups')}</a>

+ 77 - 21
desktop/core/src/desktop/templates/hue.mako

@@ -344,6 +344,7 @@ ${ hueIcons.symbols() }
       <div id="embeddable_useradmin_configurations" class="embeddable"></div>
       <div id="embeddable_useradmin_newuser" class="embeddable"></div>
       <div id="embeddable_useradmin_addldap" class="embeddable"></div>
+      <div id="embeddable_useradmin_edituser" class="embeddable"></div>
       <div id="embeddable_hbase" class="embeddable"></div>
       <div id="embeddable_security_hive" class="embeddable"></div>
       <div id="embeddable_security_hdfs" class="embeddable"></div>
@@ -535,7 +536,8 @@ ${ assist.assistPanel() }
         useradmin_permissions: '/useradmin/permissions?is_embeddable=true',
         useradmin_configurations: '/useradmin/configurations?is_embeddable=true',
         useradmin_newuser: '/useradmin/users/new?is_embeddable=true',
-        useradmin_addldap: 'useradmin/users/add_ldap_users?is_embeddable=true',
+        useradmin_addldap: '/useradmin/users/add_ldap_users?is_embeddable=true',
+        useradmin_edituser: '/useradmin/users/edit/:user?is_embeddable=true',
         hbase: '/hbase/?is_embeddable=true',
         security_hive: '/security/hive?is_embeddable=true',
         security_hdfs: '/security/hdfs?is_embeddable=true',
@@ -547,13 +549,14 @@ ${ assist.assistPanel() }
         dump_config: '/desktop/dump_config?is_embeddable=true',
       };
 
-      var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser', 'useradmin_addldap'];
+      var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser', 'useradmin_addldap', 'useradmin_edituser'];
 
       var OnePageViewModel = function () {
         var self = this;
 
         self.embeddable_cache = {};
         self.currentApp = ko.observable();
+        self.currentContextParams = ko.observable(null);
         self.isLoadingEmbeddable = ko.observable(false);
         self.extraEmbeddableURLParams = ko.observable('');
 
@@ -633,6 +636,13 @@ ${ assist.assistPanel() }
         });
 
         huePubSub.subscribe('open.link', function (href) {
+          if (href.startsWith('/') && !href.startsWith('/hue')){
+            page('/hue' + href);
+          }
+          else {
+            page(href);
+          }
+
           if (href.startsWith('/notebook/editor')){
             if (hueUtils.getSearchParameter(href, 'editor') !== '') {
               hueUtils.changeURLParameter('editor', hueUtils.getSearchParameter(href, 'editor'));
@@ -693,18 +703,6 @@ ${ assist.assistPanel() }
             self.currentApp('oozie_bundle');
           } else if (href.startsWith('/filebrowser')){
             self.currentApp('filebrowser');
-          } else if (href.startsWith('/useradmin/users/add_ldap_users')){
-            self.currentApp('useradmin_addldap');
-          } else if (href.startsWith('/useradmin/users/new')){
-            self.currentApp('useradmin_newuser');
-          } else if (href.startsWith('/useradmin/users')){
-            self.currentApp('useradmin_users');
-          } else if (href.startsWith('/useradmin/groups')){
-            self.currentApp('useradmin_groups');
-          } else if (href.startsWith('/useradmin/permissions')){
-            self.currentApp('useradmin_permissions');
-          } else if (href.startsWith('/useradmin/configurations')) {
-            self.currentApp('useradmin_configurations');
           } else if (href.startsWith('/security/hive2')) {
             self.currentApp('security_hive2');
           } else if (href.startsWith('/security/hive')) {
@@ -758,6 +756,13 @@ ${ assist.assistPanel() }
             }
             $(this).remove();
           });
+          r.find('a[href]').each(function () {
+            var link = $(this).attr('href');
+            if (link.startsWith('/') && !link.startsWith('/hue')){
+              link = '/hue' + link;
+            }
+            $(this).attr('href', link);
+          });
           r.unwrap('<span>');
           return r;
         }
@@ -775,8 +780,16 @@ ${ assist.assistPanel() }
             if (loadedApps.indexOf(newVal) == -1){
               loadedApps.push(newVal);
             }
+            var baseURL = EMBEDDABLE_PAGE_URLS[newVal];
+            if (self.currentContextParams() !== null) {
+              var route = new page.Route(baseURL);
+              route.keys.forEach(function (key) {
+                baseURL = baseURL.replace(':' + key.name, self.currentContextParams()[key.name]);
+              });
+              self.currentContextParams(null);
+            }
             $.ajax({
-              url: EMBEDDABLE_PAGE_URLS[newVal] + self.extraEmbeddableURLParams(),
+              url: baseURL + self.extraEmbeddableURLParams(),
               beforeSend: function (xhr) {
                 xhr.setRequestHeader('X-Requested-With', 'Hue');
               },
@@ -846,16 +859,59 @@ ${ assist.assistPanel() }
           });
         }
 
-        loadAppState();
-
-        window.onpopstate = function (event) {
-          loadAppState();
-        };
-
         huePubSub.subscribe('switch.app', function (name) {
           self.currentApp(name);
         });
 
+        // prepend /hue to all the link on this page
+        $('a[href]').each(function () {
+          var link = $(this).attr('href');
+          if (link.startsWith('/') && !link.startsWith('/hue')){
+            link = '/hue' + link;
+          }
+          $(this).attr('href', link);
+        });
+
+        page.base('/hue');
+
+        page('/useradmin/users/add_ldap_users', function(ctx){
+          self.currentApp('useradmin_addldap');
+        });
+
+        page('/useradmin/users/new', function(ctx){
+          self.currentApp('useradmin_newuser');
+        });
+
+        page('/useradmin/users/edit/:user', function(ctx){
+          self.currentContextParams(ctx.params);
+          self.currentApp('useradmin_edituser');
+        });
+
+        page('/useradmin/users/', function(ctx){
+          self.currentApp('useradmin_users');
+        });
+
+        page('/useradmin/groups/', function(ctx){
+          self.currentApp('useradmin_groups');
+        });
+
+        page('/useradmin/permissions/', function(ctx){
+          self.currentApp('useradmin_permissions');
+        });
+
+        page('/useradmin/configurations/', function(ctx){
+          self.currentApp('useradmin_configurations');
+        });
+
+        page('/', function(ctx){
+        });
+
+        page('*', function(ctx){
+          console.error('Route not found', ctx);
+        });
+
+        page();
+
       };
 
       var onePageViewModel = new OnePageViewModel();