From eb064c9c5e070cb1fa20af14bbc7d8735fe062c0 Mon Sep 17 00:00:00 2001
From: "Mark M. Florida" <markflorida@wustl.edu>
Date: Thu, 7 Jul 2016 19:09:42 -0500
Subject: [PATCH] XNAT-4261, XNAT-4286 (partial)

---
 src/main/webapp/WEB-INF/tags/page/xnat.tag    | 52 ++++---------
 src/main/webapp/page/blank/content.jsp        | 12 +--
 src/main/webapp/page/blank/index.jsp          |  4 +-
 src/main/webapp/scripts/xnat/app/timeout.js   |  4 +-
 .../webapp/scripts/xnat/app/topnav-browse.js  | 75 +++++++++++++++++++
 .../webapp/scripts/xnat/ui/topnav-browse.js   | 58 --------------
 .../xdat-templates/layouts/Noninteractive.vm  | 17 +++--
 .../webapp/xdat-templates/layouts/Popup.vm    | 27 ++-----
 .../navigations/NoninteractiveTop.vm          |  5 +-
 .../xdat-templates/navigations/powered_by.vm  |  2 +-
 .../xnat-templates/navigations/DefaultTop.vm  | 36 +--------
 .../xnat-templates/screens/AdminSummary.vm    | 16 ++--
 .../xnat-templates/screens/topBar/Browse.vm   |  2 +-
 .../screens/topBar/Browse/Default.vm          | 12 +--
 14 files changed, 141 insertions(+), 181 deletions(-)
 create mode 100644 src/main/webapp/scripts/xnat/app/topnav-browse.js
 delete 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 56bb7a7f..5509eb10 100644
--- a/src/main/webapp/WEB-INF/tags/page/xnat.tag
+++ b/src/main/webapp/WEB-INF/tags/page/xnat.tag
@@ -49,7 +49,7 @@
         //var showReason = typeof false != 'undefined' ? false : null;
         //var requireReason = typeof false != 'undefined' ? false : null;
 
-        window.logged_in = ${sessionScope.loggedIn};
+        window.loggedIn = ${sessionScope.loggedIn};
 
     </script>
 
@@ -73,40 +73,17 @@
     <script src="${SITE_ROOT}/scripts/lib/jquery-plugins/jquery.dataAttr.js"></script>
     <script src="${SITE_ROOT}/scripts/lib/jquery-plugins/jquery.form.js"></script>
 
-    <%-- probably not going to use the jquery spawner --%>
-    <%--<script src="${SITE_ROOT}/scripts/lib/jquery-plugins/jquery.spawn.js"></script>--%>
-
     <!-- other libraries -->
     <script src="${SITE_ROOT}/scripts/lib/spawn/spawn.js"></script>
     <script src="${SITE_ROOT}/scripts/lib/js.cookie.js"></script>
     <script src="${SITE_ROOT}/scripts/lib/yamljs/dist/yaml.js"></script>
 
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/yahoo-dom-event/yahoo-dom-event.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/event/event-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/container/container-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/menu/menu-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/element/element-beta-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/button/button-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/connection/connection-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/treeview/treeview-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/cookie/cookie-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/tabview/tabview-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/datasource/datasource-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/resize/resize-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/dragdrop/dragdrop-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/datatable/datatable-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/paginator/paginator-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/build/json/json-min.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/yui/xnat_loader.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/LeftBarTreeView.js"></script>--%>
-    <%--<script src="${SITE_ROOT}/scripts/justification/justification.js"></script>--%>
-
     <!-- XNAT utility functions -->
     <script src="${SITE_ROOT}/scripts/utils.js"></script>
 
     <script type="text/javascript">
 
-        if (window.logged_in) {
+        if (window.loggedIn) {
             Cookies.set('guest', 'false', { path: '/' });
         }
 
@@ -178,9 +155,6 @@
     <!-- YUI css -->
     <%--<link rel="stylesheet" type="text/css" href="${SITE_ROOT}/scripts/yui/build/assets/skins/sam/skin.css?v=1.7.0a1">--%>
 
-    <!-- Icon sets -->
-    <link rel="stylesheet" type="text/css" href="${SITE_ROOT}/style/icons.css?${versionString}">
-
     <!-- xdat.css and xnat.css loaded last to override YUI styles -->
     <link rel="stylesheet" type="text/css" href="${SITE_ROOT}/style/app.css?${versionString}">
 
@@ -273,34 +247,40 @@ ${bodyTop}
                     </script>
                 </li>
                 <!-- Sequence: 11 -->
-                <li><a id="browse" title="Browse" href="#Browse">Browse</a>
+                <li class="hidden"><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>
+                        <li class="hidden"><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 -->
+                                <!-- Sequence: 20 -->
                             </ul>
                         </li>
                         <li class="hidden"><a href="#BrowseData">Data</a>
                             <ul id="browse-data">
-                                <!-- Sequence: 10 -->
+                                <!-- Sequence: 30 -->
                             </ul>
                         </li>
-
-                    <script src="${SITE_ROOT}/scripts/xnat/ui/topnav-browse.js"></script>
                     </ul>
+                    <script src="${SITE_ROOT}/scripts/xnat/app/topnav-browse.js"></script>
                 </li>
                 <!-- Sequence: 20 -->
                 <li class="more"><a href="#new">New</a>
                     <ul class="" style="display: none;">
                         <!-- Sequence: 10 -->
-                        <li><a href="${SITE_ROOT}/app/template/XDATScreen_add_xnat_projectData.vm">Project</a></li>
+                        <c:set var="hidden_li">
+                            <li class="hidden">&nbsp;</li>
+                        </c:set>
+                        <%-- only allow admins to create projects for now --%>
+                        <pg:restricted msg="${hidden_li}">
+                            <li id="top-new-project">
+                                <a href="${SITE_ROOT}/app/template/XDATScreen_add_xnat_projectData.vm">Project</a>
+                            </li>
+                        </pg:restricted>
                         <li>
                             <a href="${SITE_ROOT}/app/action/XDATActionRouter/xdataction/edit/search_element/xnat:subjectData">Subject</a>
                         </li>
diff --git a/src/main/webapp/page/blank/content.jsp b/src/main/webapp/page/blank/content.jsp
index 862624f3..231c4364 100755
--- a/src/main/webapp/page/blank/content.jsp
+++ b/src/main/webapp/page/blank/content.jsp
@@ -2,20 +2,12 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="pg" tagdir="/WEB-INF/tags/page" %>
 
-<c:if test="${empty hasInit}">
-    <pg:init>
-        <c:if test="${empty hasVars}">
-            <pg:jsvars/>
-        </c:if>
-    </pg:init>
-</c:if>
-
 <div id="page-wrapper">
     <div class="pad">
 
-        <h1>${pageName}</h1>
+        <!-- <h1>${pageName}</h1> -->
 
-        <p>Stuff goes here.</p>
+        <!-- <p>Stuff goes here.</p> -->
 
     </div>
 </div>
diff --git a/src/main/webapp/page/blank/index.jsp b/src/main/webapp/page/blank/index.jsp
index 19be0e55..1b742fde 100755
--- a/src/main/webapp/page/blank/index.jsp
+++ b/src/main/webapp/page/blank/index.jsp
@@ -5,11 +5,11 @@
 <c:set var="pageName" value="blank" scope="request"/>
 
 <c:set var="_headTop">
-    <script>alert('(it is blank)')</script>
+    <script>console.log('(it is blank)')</script>
 </c:set>
 
 <c:set var="_bodyBottom">
-    <h1>I'm at the bottom.</h1>
+    <!-- <h1>I'm at the bottom.</h1> -->
 </c:set>
 
 <pg:wrapper>
diff --git a/src/main/webapp/scripts/xnat/app/timeout.js b/src/main/webapp/scripts/xnat/app/timeout.js
index ab3ccb25..96315e3a 100644
--- a/src/main/webapp/scripts/xnat/app/timeout.js
+++ b/src/main/webapp/scripts/xnat/app/timeout.js
@@ -115,7 +115,7 @@ var XNAT = getObject(XNAT);
     cookie.SESSION_DIALOG_CANCELLED = timeoutCookie('SESSION_DIALOG_CANCELLED').set('false');
 
     // is the session still active? (could have been logged out in another window)
-    cookie.SESSION_ACTIVE = timeoutCookie('SESSION_ACTIVE').set(window.logged_in);
+    cookie.SESSION_ACTIVE = timeoutCookie('SESSION_ACTIVE').set(window.loggedIn);
 
     // has the session timed out?
     cookie.SESSION_TIMED_OUT = timeoutCookie('SESSION_TIMED_OUT').get();
@@ -272,7 +272,7 @@ var XNAT = getObject(XNAT);
             // need to wait a little longer before reloading
             setTimeout(function(){
                 window.location.reload();
-            }, 2000);
+            }, 120000);
         }
 
 
diff --git a/src/main/webapp/scripts/xnat/app/topnav-browse.js b/src/main/webapp/scripts/xnat/app/topnav-browse.js
new file mode 100644
index 00000000..0401c210
--- /dev/null
+++ b/src/main/webapp/scripts/xnat/app/topnav-browse.js
@@ -0,0 +1,75 @@
+/**
+ * Manage visibility of items in the top nav bar
+ */
+
+(function(){
+
+    var $browseProjects = $('#browse-projects');
+    var $browseData = $('#browse-data');
+    var $favoriteProjects = $('#favorite-projects');
+    var undefined;
+
+    var displayProjectList = function($parent, projectList){
+        if (!projectList.length) return;
+        // convert projectList to an array of <li> elements
+        projectList = projectList.map(function(proj){
+            if (!proj.name) return;
+            return '<li><a href="' + serverRoot + '/data/projects/' + proj.id + '">' + proj.name + '</a></li>'
+        });
+        $parent.append(projectList).parents('li').removeClass('hidden');
+    };
+
+    var displayProjectNavFail = function(){
+        $browseProjects.find('.create-project').removeClass('hidden');
+    };
+
+    var displayDataNav = function(){
+        var dataTypes = window.available_elements || [];
+        if (!dataTypes.length) return;
+        // convert dataTypes to an array of <li> elements
+        dataTypes = dataTypes.map(function(type){
+            if (type.plural === undefined || type.element_name === 'wrk:workflowData') return;
+            return '<li><a href="' + serverRoot + '/app/template/Search.vm/node/d.' + type.element_name + '">' + type.plural + '</a></li>';
+        });
+        // dataTypes is now an array of <li> elements
+        $browseData.append(dataTypes).parents('li').removeClass('hidden');
+    };
+
+    //$(document).ready(function(){
+
+    var xnatJSON = XNAT.xhr.getJSON;
+    var restUrl = XNAT.url.restUrl;
+
+    // populate project list
+    xnatJSON({
+        url: restUrl('/data/projects', ['accessible=true']),
+        success: function(data){
+            displayProjectList($browseProjects, data.ResultSet.Result)
+        },
+        error: function(){
+            displayProjectNavFail();
+        }
+    });
+
+    // look for favorite projects. If found, show that dropdown list.
+    xnatJSON({
+        url: restUrl('/data/projects', ['favorite=true']),
+        success: function(data){
+            displayProjectList($favoriteProjects, data.ResultSet.Result)
+        },
+        error: function(){
+            /* set Favorite Projects nav item to hidden, if necessary */
+        }
+    });
+
+    // populate data list
+    if (window.available_elements !== undefined) {
+        displayDataNav();
+    }
+    else {
+        $browseData.parent('li').addClass('disabled');
+    }
+
+    //});
+
+})();
diff --git a/src/main/webapp/scripts/xnat/ui/topnav-browse.js b/src/main/webapp/scripts/xnat/ui/topnav-browse.js
deleted file mode 100644
index 8a49c0e2..00000000
--- a/src/main/webapp/scripts/xnat/ui/topnav-browse.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var displayProjectNav = function(projectList) {
-    if (projectList.length > 0) {
-        for (p=0, q=projectList.length; p<q; p++) {
-            if (projectList[p].name !== undefined) {
-                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=0, q=projectList.length; p<q; p++) {
-            if (projectList[p].name !== undefined) {
-                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=0, e=dataTypes.length; d<e; d++) {
-            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/xdat-templates/layouts/Noninteractive.vm b/src/main/webapp/xdat-templates/layouts/Noninteractive.vm
index a814724d..5607a737 100644
--- a/src/main/webapp/xdat-templates/layouts/Noninteractive.vm
+++ b/src/main/webapp/xdat-templates/layouts/Noninteractive.vm
@@ -18,6 +18,14 @@
     <meta http-equiv="expires" content="-1">
     <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT">
 
+    <script>
+        window.loggedIn = true;
+##        #set($username = $user.getUsername())
+##        #if (!$username)
+//            window.loggedIn = false;
+##        #end
+    </script>
+
     <script type="text/javascript">
 
         var serverRoot = "$content.getURI('')";
@@ -72,18 +80,17 @@
     <script type="text/javascript" src="$content.getURI("scripts/xmodal-v1/xmodal.js")"></script>
     <script type="text/javascript" src="$content.getURI("scripts/xmodal-v1/xmodal-migrate.js")"></script>
 
-	
 </head>
 <body class="noninteractive">
 
 <div id="page_wrapper">
 
-                $navigation.setTemplate("/NoninteractiveTop.vm")
+    $navigation.setTemplate("/NoninteractiveTop.vm")
 
-                <div id="layout_content2" style="display:none;">Loading...</DIV>
-                <div id="layout_content">$screen_placeholder</DIV>
+    <div id="layout_content2" style="display:none;">Loading...</div>
+    <div id="layout_content">$screen_placeholder</div>
 
-                $navigation.setTemplate("/DefaultBottom.vm")
+    $navigation.setTemplate("/DefaultBottom.vm")
 
 </div>
 <!-- /page_wrapper -->
diff --git a/src/main/webapp/xdat-templates/layouts/Popup.vm b/src/main/webapp/xdat-templates/layouts/Popup.vm
index 8c3f7a6e..32e5113b 100644
--- a/src/main/webapp/xdat-templates/layouts/Popup.vm
+++ b/src/main/webapp/xdat-templates/layouts/Popup.vm
@@ -1,7 +1,7 @@
 $navigation.setTemplate("/htmlOpen.vm")
 <style type="text/css">
-    html body.popup { background: #fff !important ; }
-    body.popup #page_wrapper { padding: 30px ; }
+    html body.popup { margin: 20px; background: #fff !important ; }
+    body.popup #page_wrapper { margin: 30px ; }
     body.popup #xnat_power {
         /*margin: 30px; */
         border: none;
@@ -11,7 +11,7 @@ $navigation.setTemplate("/htmlOpen.vm")
 </style>
 ## insert any template-specific <head> code here
 <script type="text/javascript">
-    window.isPopup=true;
+    window.isPopup = true;
     jq(function(){
         jq('body').addClass('popup');
     });
@@ -21,28 +21,17 @@ $navigation.setTemplate("/htmlOpen.vm")
 $navigation.setTemplate("/bodyOpen.vm")
 ## insert any template-specific code here that needs to be directly after opening <body> tag
 
-
 <!-- path: xdat-templates/layouts/Popup -->
 
-<table width="100%" height="100%" border="0">
-  <tr>
-    <td align="left" valign="top" height="60">
-    	  <div id="tp_fm"></div>
-      <div id="layout_content2" style="display:none;">Loading...</DIV>
-      <div id="layout_content">$screen_placeholder</DIV>
-    </td>
-  </tr>
-  <tr>
-    <td valign="bottom">
-      $navigation.setTemplate("/DefaultBottom.vm")
-    </td>
-  </tr>
-</table>
+<div id="tp_fm"></div>
+<div id="layout_content2" style="display:none;">Loading...</DIV>
+<div id="layout_content">$screen_placeholder</DIV>
+##$navigation.setTemplate("/DefaultBottom.vm")
 
 ## insert any template-specific code here that needs to be directly before closing </body> tag
 <script type="text/javascript">
     jq(function(){
-        if (getQueryStringValue('modal') === 'x'){
+        if (getQueryStringValue('modal') === 'x') {
             jq('body').addClass('xmodal-popup')
         }
     });
diff --git a/src/main/webapp/xdat-templates/navigations/NoninteractiveTop.vm b/src/main/webapp/xdat-templates/navigations/NoninteractiveTop.vm
index bcec7880..944527d4 100644
--- a/src/main/webapp/xdat-templates/navigations/NoninteractiveTop.vm
+++ b/src/main/webapp/xdat-templates/navigations/NoninteractiveTop.vm
@@ -19,7 +19,10 @@ $page.setBgColor($ui.bgcolor)
         #elseif($username)
         ## use default timout value from web.xml as the starting text in the "timeLeft" element
             <span id="user_info">Logged in as: &nbsp;<i>$!username</i> <b>|</b> <a href="$link.setAction("LogoutUser")">Logout</a></span>
-		#end
+		    <script>
+                window.loggedIn = true;
+            </script>
+        #end
 	#end
     <div class="clear"></div>
 </div>
diff --git a/src/main/webapp/xdat-templates/navigations/powered_by.vm b/src/main/webapp/xdat-templates/navigations/powered_by.vm
index 6ccb6b19..86905b96 100644
--- a/src/main/webapp/xdat-templates/navigations/powered_by.vm
+++ b/src/main/webapp/xdat-templates/navigations/powered_by.vm
@@ -11,7 +11,7 @@
     (function(){
 
         // add version to title attribute of XNAT logos
-        if (typeof window.top.logged_in != 'undefined' && window.top.logged_in == true){
+        if (typeof window.top.loggedIn != 'undefined' && window.top.loggedIn == true){
             Cookies.set('SESSION_ACTIVE', 'true');
             $.get(serverRoot+'/xapi/siteConfig/buildInfo',function(data){
                 var version = XNAT.version = data.version;
diff --git a/src/main/webapp/xnat-templates/navigations/DefaultTop.vm b/src/main/webapp/xnat-templates/navigations/DefaultTop.vm
index 80d431b6..805854ea 100644
--- a/src/main/webapp/xnat-templates/navigations/DefaultTop.vm
+++ b/src/main/webapp/xnat-templates/navigations/DefaultTop.vm
@@ -47,8 +47,6 @@
     </div>
 </div><!-- /user_bar -->
 
-<script src="$content.getURI("scripts/xnat/app/timeout.js")"></script>
-
 #if ($sessionCount > 1 || $sessionIpCount > 1 )
 ##If you want fewer warnings, you can eliminate $sessionCount > 1 so it will not display a warning for multiple sessions on the same IP, or increase it to $sessionCount > X where X is the maximum number of sessions you can have on the same IP before you get a warning.
 <script type="text/javascript">
@@ -116,35 +114,7 @@
 
         // cache it
         var main_nav$ = jq('#main_nav ul.nav');
-
-//        function subnav(items){
-//            var lis = [];
-//            items.forEach(function(item){
-//                lis.push(['li', '<a href="' + item.href + '">' + item.label + '</a>']);
-//            });
-//            return spawn('li|class=more', [
-//                spawn('a', 'More...'),
-//                spawn('ul|class=subnav', lis)
-//            ]);
-//        }
-//
-//        // spawn a subnav under "New"
-//        main_nav$.find('[href="#new"]').next('ul').append(subnav([
-//            { href: '#!mr', label: 'MR Session'},
-//            { href: '#!pet', label: 'PET Session'},
-//            { href: '#!ct', label: 'CT Session'}
-//        ]))
-//
-//
-//        // spawn a subnav under "Upload"
-//        main_nav$.find('[href="#upload"]').next('ul').append(subnav([
-//            { href: '#!json', label: 'JSON'},
-//            { href: '#!text', label: 'Text'},
-//            { href: '#!html', label: 'HTML'}
-//        ]))
-
         var body$ = jq('body');
-
         var cover_up_count = 1;
 
         function coverApplet(el$){
@@ -281,8 +251,6 @@
 
     })();
 
-    logged_in = true ;
-
     // initialize the advanced search method toggler
     XNAT.app.searchMethodToggler = function(_parent){
 
@@ -327,6 +295,10 @@
     };
 
 </script>
+<script>
+    window.loggedIn = true;
+</script>
+<script src="$content.getURI("scripts/xnat/app/timeout.js")"></script>
 
 <div id="tp_fm"></div>
 
diff --git a/src/main/webapp/xnat-templates/screens/AdminSummary.vm b/src/main/webapp/xnat-templates/screens/AdminSummary.vm
index cb5b4bb6..38bbe677 100644
--- a/src/main/webapp/xnat-templates/screens/AdminSummary.vm
+++ b/src/main/webapp/xnat-templates/screens/AdminSummary.vm
@@ -35,9 +35,6 @@ From:
 </form>
 
 
-<script type="text/javascript" src="$content.getURI("scripts/sortable_us.js")"></script>
-
-
 <div id="new_projects" class="section">
     <h3>New $displayManager.getPluralDisplayNameForProject()</h3>
     $qm.execute("select meta.insert_date as ""Date Created"", textcat(textcat(use.firstname, ' '),use.lastname) as ""Creator"", invest.lastname as ""Investigator"", proj.id as ""ID"", proj.name as ""Name"", proj.secondary_id as ""Secondary ID"", proj.description as ""Description"", proj.keywords as ""Keywords"" from xnat_projectdata_meta_data meta join xnat_projectdata proj on proj.projectdata_info = meta.meta_data_id left join xnat_investigatordata invest on proj.pi_xnat_investigatordata_id = invest.xnat_investigatordata_id left join xdat_user use on meta.insert_user_xdat_user_id = use.xdat_user_id where meta.insert_date > (NOW()-interval '$duration1') AND meta.insert_date < (NOW()-interval '$duration2')")
@@ -85,8 +82,6 @@ From:
                 table_id = div.id + '_TABLE';
 
             div.style.marginTop = '20px';
-//            __div.css('margin-top','20px');
-//            __div.find('> h3').css('margin-bottom','10px');
 
             // remove the table if there are no records
             if (__table.find('> tbody > tr').length === 0){
@@ -95,14 +90,17 @@ From:
                 return;
             }
 
-//            jq(table).removeAttr('width');
-
             table.id = table_id;
-            table.className = 'sortable xnat-table alt1'
+            table.className = 'xnat-table alt1 highlight sortable'
             table.width = '100%';
             table.style.marginTop = '10px';
 
-            ts_makeSortable(table);
+            __table.find('tr').each(function(){
+                var __tr = $(this);
+                __tr.find('> th, > td').first().addClass('index');
+            })
+
+            __table.tableSort();
 
         });
 
diff --git a/src/main/webapp/xnat-templates/screens/topBar/Browse.vm b/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
index ef9715f9..861f7ca0 100644
--- a/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
+++ b/src/main/webapp/xnat-templates/screens/topBar/Browse.vm
@@ -1,5 +1,5 @@
 <!-- Sequence: 11 -->
-<li><a href="#browse">Browse</a>
+<li class="hidden"><a href="#browse">Browse</a>
     <ul style="min-width: 120px">
         #addGlobalCustomScreens("topBar/Browse")
     </ul>
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 768a4c67..6b0f9212 100644
--- a/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm
+++ b/src/main/webapp/xnat-templates/screens/topBar/Browse/Default.vm
@@ -1,20 +1,22 @@
 <!-- Sequence: 10 -->
 <!-- Browse/Default -->
-    <li><a href="#BrowseProjects">Projects</a>
+    <li class="hidden"><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")">Create $displayManager.getSingularDisplayNameForProject()</a></li>
+            #if($siteConfig.getUiAllowNonAdminProjectCreation() || $data.getSession().getAttribute("userHelper").canCreate("xnat:subjectData"))
+                <li class="create-project hidden"><a href="$link.setPage("XDATScreen_add_xnat_projectData.vm")">Create $displayManager.getSingularDisplayNameForProject()</a></li>
+            #end
         </ul>
     </li>
     <li class="hidden"><a href="#FavoriteProjects">Favorite Projects</a>
         <ul id="favorite-projects">
-            <!-- Sequence: 10 -->
+            <!-- Sequence: 20 -->
         </ul>
     </li>
     <li class="hidden"><a href="#BrowseData">Data</a>
         <ul id="browse-data">
-            <!-- Sequence: 10 -->
+            <!-- Sequence: 30 -->
         </ul>
     </li>
 
-<script src="$content.getURI("/scripts/xnat/ui/topnav-browse.js")"></script>
+<script src="$content.getURI("/scripts/xnat/app/topnav-browse.js")"></script>
-- 
GitLab