Browse Source

[frontend] Allow customization of app ordering in the nav bar

Added a MENU_INDEX property to the app settings py file for apps to specify
where they should appear in the top nav.
Ben Bishop 14 năm trước cách đây
mục cha
commit
d281ef6965

+ 1 - 0
apps/about/src/about/settings.py

@@ -16,3 +16,4 @@
 DJANGO_APPS = [ "about" ]
 DJANGO_APPS = [ "about" ]
 NICE_NAME = "About"
 NICE_NAME = "About"
 REQUIRES_HADOOP = False
 REQUIRES_HADOOP = False
+MENU_INDEX = 80

+ 1 - 0
apps/beeswax/src/beeswax/settings.py

@@ -17,3 +17,4 @@ DJANGO_APPS = [ "beeswax" ]
 NICE_NAME = "Beeswax (Hive UI)"
 NICE_NAME = "Beeswax (Hive UI)"
 REQUIRES_HADOOP = True
 REQUIRES_HADOOP = True
 ICON = "/beeswax/static/art/beeswax-logo.png"
 ICON = "/beeswax/static/art/beeswax-logo.png"
+MENU_INDEX = 10

+ 1 - 0
apps/filebrowser/src/filebrowser/settings.py

@@ -19,3 +19,4 @@ DJANGO_APPS = ['filebrowser']
 NICE_NAME = "File Browser"
 NICE_NAME = "File Browser"
 REQUIRES_HADOOP = False
 REQUIRES_HADOOP = False
 ICON = "/filebrowser/static/art/icon.png"
 ICON = "/filebrowser/static/art/icon.png"
+MENU_INDEX = 20

+ 1 - 0
apps/help/src/help/settings.py

@@ -17,3 +17,4 @@ DJANGO_APPS = ['help']
 NICE_NAME = "Help"
 NICE_NAME = "Help"
 REQUIRES_HADOOP = False
 REQUIRES_HADOOP = False
 ICON = "/help/static/art/help.png"
 ICON = "/help/static/art/help.png"
+MENU_INDEX = 90

+ 1 - 0
apps/jobbrowser/src/jobbrowser/settings.py

@@ -22,3 +22,4 @@ DJANGO_APPS = ['jobbrowser']
 NICE_NAME = "Job Browser"
 NICE_NAME = "Job Browser"
 REQUIRES_HADOOP = True
 REQUIRES_HADOOP = True
 ICON = "/jobbrowser/static/art/icon_large.png"
 ICON = "/jobbrowser/static/art/icon_large.png"
+MENU_INDEX = 30

+ 1 - 0
apps/jobsub/src/jobsub/settings.py

@@ -22,3 +22,4 @@ MIDDLEWARE_CLASSES=[
 ]
 ]
 
 
 ICON = "/jobsub/static/art/icon.png"
 ICON = "/jobsub/static/art/icon.png"
+MENU_INDEX = 40

+ 1 - 0
apps/shell/src/shell/settings.py

@@ -24,3 +24,4 @@ PERMISSION_ACTIONS = (
 )
 )
 
 
 ICON = "/shell/static/art/shell.png"
 ICON = "/shell/static/art/shell.png"
+MENU_INDEX = 50

+ 1 - 0
apps/useradmin/src/useradmin/settings.py

@@ -16,3 +16,4 @@
 DJANGO_APPS = [ "useradmin" ]
 DJANGO_APPS = [ "useradmin" ]
 NICE_NAME = "User Admin"
 NICE_NAME = "User Admin"
 REQUIRES_HADOOP = False
 REQUIRES_HADOOP = False
+MENU_INDEX = 60

+ 1 - 0
desktop/core/src/desktop/app_template/src/app_name/settings.py

@@ -15,3 +15,4 @@
 # limitations under the License.
 # limitations under the License.
 DJANGO_APPS = [ "${app_name}" ]
 DJANGO_APPS = [ "${app_name}" ]
 REQUIRES_HADOOP = False
 REQUIRES_HADOOP = False
+MENU_INDEX = 100

+ 5 - 0
desktop/core/src/desktop/appmanager.py

@@ -119,6 +119,11 @@ class DesktopModuleInfo(object):
     else:
     else:
         self.icon_path = ""
         self.icon_path = ""
 
 
+    if hasattr(self.settings, "MENU_INDEX"):
+        self.menu_index = self.settings.MENU_INDEX
+    else:
+        self.menu_index = 999
+
     if self.config_key is not None:
     if self.config_key is not None:
       self.display_name = self.config_key
       self.display_name = self.config_key
 
 

+ 3 - 1
desktop/core/src/desktop/views.py

@@ -264,8 +264,10 @@ def commonheader(title, section, padding="60px"):
   """
   """
   Returns the rendered common header
   Returns the rendered common header
   """
   """
+  apps_list = sorted(appmanager.DESKTOP_APPS[:], key=lambda app: app.menu_index)
+
   return render_to_string("common_header.html", dict(
   return render_to_string("common_header.html", dict(
-    apps=appmanager.DESKTOP_APPS,
+    apps=apps_list,
     title=title,
     title=title,
     section=section,
     section=section,
     padding=padding
     padding=padding