From d2220fd8ba71ec510c63548d79809c4041d33572 Mon Sep 17 00:00:00 2001
From: Will <hortonw@mir.wustl.edu>
Date: Sun, 5 Jun 2016 12:37:27 -0500
Subject: [PATCH] XNAT-4324, XNAT-4194: Fix Browse menu display issues, and
 apply them to Admin pages as well. Update docs links in Admin pages too.

---
 src/main/webapp/WEB-INF/tags/page/xnat.tag    | 26 ++++++++-
 .../webapp/scripts/xnat/ui/topnav-browse.js   | 54 +++++++++++++++++++
 .../xnat-templates/screens/topBar/Browse.vm   |  2 +-
 .../screens/topBar/Browse/Default.vm          | 54 ++-----------------
 4 files changed, 83 insertions(+), 53 deletions(-)
 create mode 100644 src/main/webapp/scripts/xnat/ui/topnav-browse.js

diff --git a/src/main/webapp/WEB-INF/tags/page/xnat.tag b/src/main/webapp/WEB-INF/tags/page/xnat.tag
index ca4ed6bc..bf6b7271 100644
--- a/src/main/webapp/WEB-INF/tags/page/xnat.tag
+++ b/src/main/webapp/WEB-INF/tags/page/xnat.tag
@@ -270,6 +270,30 @@ ${bodyTop}
                         });
                     </script>
                 </li>
+                <!-- Sequence: 11 -->
+                <li><a id="browse" title="Browse" href="#Browse">Browse</a>
+                    <ul class="" style="display:none; min-width: 120px;">
+                    <!-- Browse/Default -->
+                        <li><a href="#BrowseProjects">Projects</a>
+                            <ul id="browse-projects">
+                                <!-- Sequence: 10 -->
+                                <li class="create-project hidden"><a href="${SITE_ROOT}/app/template/XDATScreen_add_xnat_projectData.vm">Project</a></li>
+                            </ul>
+                        </li>
+                        <li class="hidden"><a href="#FavoriteProjects">Favorite Projects</a>
+                            <ul id="favorite-projects">
+                                <!-- Sequence: 10 -->
+                            </ul>
+                        </li>
+                        <li class="hidden"><a href="#BrowseData">Data</a>
+                            <ul id="browse-data">
+                                <!-- Sequence: 10 -->
+                            </ul>
+                        </li>
+
+                    <script src="${SITE_ROOT}/scripts/xnat/ui/topnav-browse.js"></script>
+                    </ul>
+                </li>
                 <!-- Sequence: 20 -->
                 <li class="more"><a href="#new">New</a>
                     <ul class="" style="display: none;">
@@ -330,7 +354,7 @@ ${bodyTop}
                         <!-- Sequence: 10 -->
                         <!-- allowGuest: true -->
                         <li>
-                            <a href="https://wiki.xnat.org/display/XNAT16/XNAT+Desktop" target="_blank">XNAT Desktop (XND)</a>
+                            <a href="https://wiki.xnat.org/display/XTOOLS/XNAT+Desktop" target="_blank">XNAT Desktop (XND)</a>
                         </li>
                         <li>
                             <a href="http://nrg.wustl.edu/software/dicom-browser/" target="_blank">DICOM Browser</a>
diff --git a/src/main/webapp/scripts/xnat/ui/topnav-browse.js b/src/main/webapp/scripts/xnat/ui/topnav-browse.js
new file mode 100644
index 00000000..3f69402d
--- /dev/null
+++ b/src/main/webapp/scripts/xnat/ui/topnav-browse.js
@@ -0,0 +1,54 @@
+var displayProjectNav = function(projectList) {
+    if (projectList.length > 0) {
+        for (p in projectList) {
+            var pLink = '<li><a href="'+serverRoot+'/data/projects/'+projectList[p].id+'">'+projectList[p].name+'</a></li>';
+            $('#browse-projects').append(pLink);
+        };
+    } else {
+        $('#browse-projects').find('.create-project').removeClass('hidden');
+    }
+};
+var displayFavoriteProjects = function(projectList) {
+    if (projectList.length > 0) {
+        for (p in projectList) {
+            var pLink = '<li><a href="'+serverRoot+'/data/projects/'+projectList[p].id+'">'+projectList[p].name+'</a></li>';
+            $('#favorite-projects').append(pLink);
+        };
+        $('#favorite-projects').parent('li').removeClass('hidden');
+    }
+}
+
+var displayProjectNavFail = function() {
+    $('#browse-projects').find('.create-project').removeClass('hidden');
+};
+
+var displayDataNav = function() {
+    var dataTypes = window.available_elements;
+    if (dataTypes.length > 0) {
+        for (d in dataTypes) {
+            if (dataTypes[d].plural !== undefined && dataTypes[d].element_name !== 'wrk:workflowData') {
+                var dLink = '<li><a href="'+serverRoot+'/app/template/Search.vm/node/d.'+dataTypes[d].element_name+'">'+dataTypes[d].plural+'</a></li>';
+                $('#browse-data').append(dLink);
+            }
+        };
+        $('#browse-data').parent('li').removeClass('hidden');
+    }
+};
+$(document).ready(function(){
+    // populate project list
+    $.getJSON(serverRoot+'/data/projects?accessible=true&XNAT_CSRF='+csrfToken)
+        .success(function(data){ displayProjectNav(data.ResultSet.Result) })
+        .fail(function() { displayProjectNavFail(); });
+
+    // look for favorite projects. If found, show that dropdown list.
+    $.getJSON(serverRoot+'/data/projects?favorite=true&format=json&XNAT_CSRF='+csrfToken)
+        .success(function(data) { displayFavoriteProjects(data.ResultSet.Result) })
+        .fail(function() { /* set Favorite Projects nav item to hidden, if necessary */ });
+
+    // populate data list
+    if (window.available_elements !== undefined) {
+        displayDataNav();
+    } else {
+        $('#browse-data').parent('li').addClass('disabled');
+    }
+});
diff --git a/src/main/webapp/xnat-templates/screens/topBar/Browse.vm b/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
index b8d56ec2..ef9715f9 100644
--- a/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
+++ b/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
@@ -1,6 +1,6 @@
 <!-- Sequence: 11 -->
 <li><a href="#browse">Browse</a>
-    <ul style="width: 151px;">
+    <ul style="min-width: 120px">
         #addGlobalCustomScreens("topBar/Browse")
     </ul>
 </li>
diff --git a/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm b/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm
index 607b687a..768a4c67 100644
--- a/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm
+++ b/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm
@@ -3,7 +3,7 @@
     <li><a href="#BrowseProjects">Projects</a>
         <ul id="browse-projects">
             <!-- Sequence: 10 -->
-            <li class="create-project hidden"><a href="$link.setPage("XDATScreen_add_xnat_projectData.vm")">$displayManager.getSingularDisplayNameForProject()</a></li>
+            <li class="create-project hidden"><a href="$link.setPage("XDATScreen_add_xnat_projectData.vm")">Create $displayManager.getSingularDisplayNameForProject()</a></li>
         </ul>
     </li>
     <li class="hidden"><a href="#FavoriteProjects">Favorite Projects</a>
@@ -11,58 +11,10 @@
             <!-- Sequence: 10 -->
         </ul>
     </li>
-    <li><a href="#BrowseData">Data</a>
+    <li class="hidden"><a href="#BrowseData">Data</a>
         <ul id="browse-data">
             <!-- Sequence: 10 -->
         </ul>
     </li>
 
-<script>
-    var displayProjectNav = function(projectList) {
-        for (p in projectList) {
-            var pLink = '<li><a href="'+serverRoot+'/data/projects/'+projectList[p].id+'">'+projectList[p].name+'</a></li>';
-            $('#browse-projects').append(pLink);
-        };
-    };
-    var displayFavoriteProjects = function(projectList) {
-        if (projectList.length > 0) {
-            for (p in projectList) {
-                var pLink = '<li><a href="'+serverRoot+'/data/projects/'+projectList[p].id+'">'+projectList[p].name+'</a></li>';
-                $('#favorite-projects').append(pLink);
-            };
-            $('#favorite-projects').parent('li').removeClass('hidden');
-        }
-    }
-
-    var displayProjectNavFail = function() {
-        $('#browse-projects').find('.create-project').removeClass('hidden');
-    };
-
-    var displayDataNav = function() {
-        var dataTypes = window.available_elements;
-        for (d in dataTypes) {
-            if (dataTypes[d].plural !== undefined && dataTypes[d].element_name !== 'wrk:workflowData') {
-                var dLink = '<li><a href="'+serverRoot+'/app/template/Search.vm/node/d.'+dataTypes[d].element_name+'">'+dataTypes[d].plural+'</a></li>';
-                $('#browse-data').append(dLink);
-            }
-        };
-    };
-    $(document).ready(function(){
-        // populate project list
-        $.getJSON(serverRoot+'/data/projects?accessible=true&XNAT_CSRF='+csrfToken)
-            .success(function(data){ displayProjectNav(data.ResultSet.Result) })
-            .fail(function() { displayProjectNavFail(); });
-
-        // look for favorite projects. If found, show that dropdown list.
-        $.getJSON(serverRoot+'/data/projects?favorite=true&format=json&XNAT_CSRF='+csrfToken)
-            .success(function(data) { displayFavoriteProjects(data.ResultSet.Result) })
-            .fail(function() { /* set Favorite Projects nav item to hidden, if necessary */ });
-
-        // populate data list
-        if (window.available_elements !== undefined) {
-            displayDataNav();
-        } else {
-            $('#browse-data').parent('li').addClass('disabled');
-        }
-    });
-</script>
+<script src="$content.getURI("/scripts/xnat/ui/topnav-browse.js")"></script>
-- 
GitLab