فهرست منبع

HUE-6091 [core] Simplified filebrowser routing

Enrico Berti 8 سال پیش
والد
کامیت
be75f27

+ 1 - 17
apps/filebrowser/src/filebrowser/templates/fb_components.mako

@@ -20,7 +20,7 @@ from django.utils.translation import ugettext as _
 from aws import get_client
 %>
 
-<%def name="breadcrumbs(path, breadcrumbs, from_listdir=False, is_embeddable=False)">
+<%def name="breadcrumbs(path, breadcrumbs, from_listdir=False)">
     % if from_listdir:
       <ul class="nav nav-pills hueBreadcrumbBar">
         %if path.lower().find('s3a://') == 0:
@@ -56,21 +56,6 @@ from aws import get_client
       </ul>
     % else:
       <ul class="nav nav-pills hueBreadcrumbBar">
-        %if is_embeddable:
-        <li><a href="javascript:void(0)" onclick="huePubSub.publish('open.link', '${url('filebrowser.views.view', path=urlencode(path))}?default_to_home')" class="homeLink"><i class="fa fa-home"></i> ${_('Home')}</a></li>
-        <li>
-          <ul class="hueBreadcrumb" style="padding-right:40px; padding-top: 12px">
-          % for breadcrumb_item in breadcrumbs:
-            <% label, f_url = breadcrumb_item['label'], breadcrumb_item['url'] %>
-            %if label[-1] == '/':
-            <li><a href="javascript:void(0)" onclick="huePubSub.publish('open.fb.folder', '${f_url}')"><span class="divider">${label}</span></a></li>
-            %else:
-            <li><a href="javascript:void(0)" onclick="huePubSub.publish('open.fb.folder', '${f_url}')">${label}</a><span class="divider">/</span></li>
-            %endif
-          % endfor
-          </ul>
-        </li>
-        %else:
         <li><a href="${url('filebrowser.views.view', path=urlencode(path))}?default_to_home" class="homeLink"><i class="fa fa-home"></i> ${_('Home')}</a></li>
         <li>
           <ul class="hueBreadcrumb" style="padding-right:40px; padding-top: 12px">
@@ -84,7 +69,6 @@ from aws import get_client
           % endfor
           </ul>
         </li>
-        %endif
       </ul>
     % endif
 </%def>

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -1347,7 +1347,7 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
           location.hash = stripHashes(file.path);
         } else {
           %if is_embeddable:
-          huePubSub.publish('open.fb.file', file.path);
+          huePubSub.publish('page.route', file.url);
           %else:
           location.href = file.url;
           %endif

+ 2 - 9
apps/metastore/src/metastore/templates/metastore.mako

@@ -305,14 +305,7 @@ ${ components.menubar() }
           ${_('Stored in')} Kudu
         <!-- /ko -->
         <!-- ko if: details.properties.format != 'kudu' -->
-          <!-- ko if: IS_HUE_4 -->
-            <a data-bind="click: function () { huePubSub.publish('open.fb.folder', hdfs_link.replace(/\/filebrowser\/view=/g, '') ); }" href="javascript:void(0)" title="${_('Open data location')}">
-              ${_('Location')}
-            </a>
-          <!-- /ko -->
-          <!-- ko if: ! IS_HUE_4 -->
-            <a data-bind="attr: {'href': hdfs_link, 'rel': path_location}" title="${_('Open data location')}">${_('Location')}</a>
-          <!-- /ko -->
+          <a data-bind="attr: {'href': hdfs_link, 'rel': path_location}" title="${_('Open data location')}">${_('Location')}</a>
         <!-- /ko -->
       </div>
       <!-- ko with: $parent.tableStats -->
@@ -1179,7 +1172,7 @@ ${ components.menubar() }
       format: "json"
     },function(resp) {
       if (resp.uri_path) {
-        huePubSub.publish('open.fb.folder', resp.uri_path.replace(/\/filebrowser\/view=/g, '') );
+        huePubSub.publish('page.route', resp.uri_path );
       } else if (resp.message) {
         $(document).trigger("error", resp.message);
       }

+ 2 - 6
apps/oozie/src/oozie/templates/editor2/workflow_editor.mako

@@ -64,13 +64,9 @@ ${ commonheader(_("Workflow Editor"), "Oozie", user, request, "40px") | n,unicod
       <i class="fa fa-fw fa-history"></i>
     </a>
 
-    <a title="${ _('Workspace') }" target="_blank" rel="tooltip" data-placement="right"
+    <a title="${ _('Workspace') }" ${ not is_embeddable and 'target="_blank"' or ''} rel="tooltip" data-placement="right"
         data-original-title="${ _('Go upload additional files and libraries to the deployment directory') }"
-       %if is_embeddable:
-        href="javascript: void(0)" data-bind="css: {'btn': true}, click: function() { huePubSub.publish('open.fb.folder', $root.workflow.properties.deployment_dir()) }"
-       %else:
-        data-bind="css: {'btn': true}, attr: { href: '/filebrowser/view=' + $root.workflow.properties.deployment_dir() }"
-       %endif
+        data-bind="css: {'btn': true}, attr: { href: '${is_embeddable and '/hue' or ''}/filebrowser/view=' + $root.workflow.properties.deployment_dir() }"
       >
       <i class="fa fa-fw fa-folder-open"></i>
     </a>

+ 1 - 1
desktop/core/src/desktop/templates/common_notebook_ko_components.mako

@@ -365,7 +365,7 @@ except ImportError, e:
             if (resp.status == 0) {
               if (IS_HUE_4) {
                 if (self.saveTarget() == '') {
-                  huePubSub.publish('open.fb.folder', resp.watch_url.replace(/\/filebrowser\/view=/g, ''));
+                  huePubSub.publish('page.route', resp.watch_url);
                 } else {
                   if (resp.history_uuid) {
                     huePubSub.publish('notebook.task.submitted', resp.history_uuid);

+ 19 - 58
desktop/core/src/desktop/templates/hue.mako

@@ -244,10 +244,10 @@ ${ hueIcons.symbols() }
         <li class="header">&nbsp;</li>
         <li class="header" style="padding-left: 4px; border-bottom: 1px solid #DDD; padding-bottom: 3px;">${ _('Browse') }</li>
         % if 'filebrowser' in apps:
-        <li data-bind="click: function () { onePageViewModel.currentApp('filebrowser') }"><a href="javascript: void(0);">Files</a></li>
+        <li data-bind="click: function () { page('/filebrowser/view=') }"><a href="javascript: void(0);">Files</a></li>
         % endif
         % if is_s3_enabled:
-        <li data-bind="click: function () { onePageViewModel.currentApp('filebrowser_s3') }"><a href="javascript: void(0);">S3</a></li>
+        <li data-bind="click: function () { page('/filebrowser/view=S3A://') }"><a href="javascript: void(0);">S3</a></li>
         % endif
         % if 'metastore' in apps:
         <li data-bind="click: function () { page('/metastore/tables/') }"><a href="javascript: void(0);">Tables</a></li>
@@ -330,8 +330,6 @@ ${ hueIcons.symbols() }
       <div id="embeddable_oozie_bundle" class="embeddable"></div>
       <div id="embeddable_jobbrowser" class="embeddable"></div>
       <div id="embeddable_filebrowser" class="embeddable"></div>
-      <div id="embeddable_filebrowser_s3" class="embeddable"></div>
-      <div id="embeddable_fileviewer" class="embeddable"></div>
       <div id="embeddable_home" class="embeddable"></div>
       <div id="embeddable_indexer" class="embeddable"></div>
       <div id="embeddable_importer" class="embeddable"></div>
@@ -522,9 +520,7 @@ ${ assist.assistPanel() }
         oozie_coordinator: '/oozie/editor/coordinator/new/',
         oozie_bundle: '/oozie/editor/bundle/new/',
         jobbrowser: '/jobbrowser/apps',
-        filebrowser: '/filebrowser/',
-        filebrowser_s3: '/filebrowser/view=S3A://',
-        fileviewer: 'filebrowser/view=',
+        filebrowser: '/filebrowser/view=*',
         home: '/home',
         indexer: '/indexer/indexer/',
         collections: '/dashboard/admin/collections',
@@ -548,7 +544,7 @@ ${ assist.assistPanel() }
         dump_config: '/desktop/dump_config',
       };
 
-      var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser', 'useradmin_addldap', 'useradmin_edituser'];
+      var SKIP_CACHE = ['filebrowser', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser', 'useradmin_addldap', 'useradmin_edituser'];
 
       var OnePageViewModel = function () {
         var self = this;
@@ -598,18 +594,6 @@ ${ assist.assistPanel() }
           huePubSub.publish('set.current.app.name', self.currentApp());
         });
 
-        huePubSub.subscribe('open.fb.file', function (path) {
-          self.extraEmbeddableURLParams(path + '?is_embeddable=true');
-          //hueUtils.changeURLParameter('path', path);
-          self.currentApp('fileviewer');
-        });
-
-        huePubSub.subscribe('open.fb.folder', function (path) {
-          //hueUtils.removeURLParameter('path');
-          self.currentApp('filebrowser');
-          window.location.hash = path;
-        });
-
         huePubSub.subscribe('open.editor.query', function (uuid) {
           self.currentApp('editor');
           self.getActiveAppViewModel(function (viewModel) {
@@ -767,10 +751,6 @@ ${ assist.assistPanel() }
         }
 
         self.currentApp.subscribe(function (newVal) {
-          //hueUtils.changeURLParameter('app', newVal);
-          if (newVal !== 'editor') {
-            //hueUtils.removeURLParameter('type');
-          }
           self.isLoadingEmbeddable(true);
           loadedApps.forEach(function (app) {
             window.pauseAppIntervals(app);
@@ -783,7 +763,12 @@ ${ assist.assistPanel() }
             if (self.currentContextParams() !== null) {
               var route = new page.Route(baseURL);
               route.keys.forEach(function (key) {
-                baseURL = baseURL.replace(':' + key.name, self.currentContextParams()[key.name]);
+                if (key.name === 0){
+                  baseURL = baseURL.replace('*', self.currentContextParams()[key.name]);
+                }
+                else {
+                  baseURL = baseURL.replace(':' + key.name, self.currentContextParams()[key.name]);
+                }
               });
               self.currentContextParams(null);
             }
@@ -811,39 +796,6 @@ ${ assist.assistPanel() }
           $('#embeddable_' + newVal).insertBefore($('.embeddable:first')).show();
         });
 
-        var loadAppState = function () {
-          if (window.location.getParameter('app') !== '' && EMBEDDABLE_PAGE_URLS[window.location.getParameter('app')]) {
-            var app = window.location.getParameter('app');
-            switch (app) {
-              case 'fileviewer':
-                if (window.location.getParameter('path') !== '') {
-                  self.extraEmbeddableURLParams(window.location.getParameter('path') + '?is_embeddable=true');
-                  self.currentApp(app);
-                }
-                else {
-                  self.currentApp('filebrowser');
-                }
-                break;
-              case 'filebrowser':
-                var previousHash = window.location.hash;
-                self.currentApp(app);
-                window.location.hash = previousHash;
-                break;
-              case 'editor':
-                if (window.location.getParameter('type') !== '') {
-                  self.changeEditorType(window.location.getParameter('type'));
-                }
-                self.currentApp(app);
-                break;
-              default:
-                self.currentApp(app);
-            }
-          }
-          else {
-            self.currentApp('editor');
-          }
-        }
-
         self.dropzoneError = function (filename) {
           self.currentApp('importer');
           self.getActiveAppViewModel(function (vm) {
@@ -873,6 +825,11 @@ ${ assist.assistPanel() }
 
         page.base('/hue');
 
+        page('/filebrowser/view=*', function(ctx){
+          self.currentContextParams(ctx.params);
+          self.currentApp('filebrowser');
+        });
+
         page('/useradmin/users/add_ldap_users', function(ctx){
           self.currentApp('useradmin_addldap');
         });
@@ -972,6 +929,10 @@ ${ assist.assistPanel() }
 
         page();
 
+        huePubSub.subscribe('page.route', function (path) {
+          page(path);
+        });
+
       };
 
       var onePageViewModel = new OnePageViewModel();