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"> </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: <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