diff --git a/src/main/webapp/scripts/xnat/app/customPage.js b/src/main/webapp/scripts/xnat/app/customPage.js index 3dd20bd8b1991bb92b18a88ce9aa0d7f614722a3..b2290809adf1c9b0c1c6d85ca31bb45723f00e7e 100644 --- a/src/main/webapp/scripts/xnat/app/customPage.js +++ b/src/main/webapp/scripts/xnat/app/customPage.js @@ -2,7 +2,11 @@ * Retrieve custom pages via AJAX * Used in: /xnat-templates/screens/Page.vm */ -(function(NS, factory){ + +var XNAT = getObject(XNAT); +XNAT.app = getObject(XNAT.app||{}); + +(function(factory){ if (typeof define === 'function' && define.amd) { define(factory); } @@ -10,14 +14,11 @@ module.exports = factory(); } else { - return factory(NS); + return factory(); } -}('app.customPage', function(NS, undefined){ - - // setExtendedObject() hasn't been tested yet - // var customPage = setExtendedObject(XNAT, NS); +}(function(){ - var customPage = getObject(eval('XNAT.'+NS)||{}); + var customPage = getObject(XNAT.app.customPage||{}); customPage.getName = function(){ var name = getQueryStringValue('view'); diff --git a/src/main/webapp/xnat-templates/layouts/Basic.vm b/src/main/webapp/xnat-templates/layouts/Basic.vm new file mode 100644 index 0000000000000000000000000000000000000000..b0f4c7f55ea3d971a6eed2f72231882696cbdcb5 --- /dev/null +++ b/src/main/webapp/xnat-templates/layouts/Basic.vm @@ -0,0 +1,9 @@ +<!DOCTYPE html> +##Copyright 2005 Harvard University / Howard Hughes Medical Institute (HHMI) All Rights Reserved +<!-- start xnat-templates/layouts/Basic.vm --> +<!--[if lt IE 9]><html class="ie ie8 ltie9 ltie10"><![endif]--> +<!--[if IE 9]><html class="ie ie9 ltie10"><![endif]--> +<!--[if gt IE 9]><!--> <html> <!--<![endif]--> + $screen_placeholder +<!-- end xnat-templates/layouts/Basic.vm --> +</html> \ No newline at end of file diff --git a/src/main/webapp/xnat-templates/layouts/Content.vm b/src/main/webapp/xnat-templates/layouts/Content.vm new file mode 100644 index 0000000000000000000000000000000000000000..d4a7e6327758486fbb5017b2ef14933530f718ee --- /dev/null +++ b/src/main/webapp/xnat-templates/layouts/Content.vm @@ -0,0 +1,11 @@ +<!-- start xnat-templates/layouts/Content.vm --> + +## probably don't want to load these since +## they may already be loaded elsewhere +## +## #parse("/navigations/BaseJS.vm") +## #parse("/navigations/AppJS.vm") + +$screen_placeholder + +<!-- end xnat-templates/layouts/Content.vm --> diff --git a/src/main/webapp/xnat-templates/navigations/AppJS.vm b/src/main/webapp/xnat-templates/navigations/AppJS.vm new file mode 100644 index 0000000000000000000000000000000000000000..21060b3c0c50950d3bf850b9b1116f62e60c2464 --- /dev/null +++ b/src/main/webapp/xnat-templates/navigations/AppJS.vm @@ -0,0 +1,26 @@ +## Main JavaScript and CSS files for XNAT + +## only load once +#if (!$appJS) + + <!-- app.css loaded last --> + <link rel="stylesheet" type="text/css" href="$content.getURI('style/app.css?v=1.7.0a1')"> + + <link rel="stylesheet" type="text/css" href="$content.getURI('scripts/xmodal-v1/xmodal.css?v=1.7.0a1')"> + <script src="$content.getURI('scripts/xmodal-v1/xmodal.js')"></script> + <script src="$content.getURI('scripts/xmodal-v1/xmodal-migrate.js')"></script> + + <!-- XNAT JLAPI scripts --> + <script src="$content.getURI('scripts/xnat/url.js')"></script> + <script src="$content.getURI('scripts/xnat/xhr.js')"></script> + ##<script src="$content.getURI('scripts/xnat/widget.js')"></script> + <script src="$content.getURI('scripts/xnat/ui/popup.js')"></script> + <script src="$content.getURI('scripts/xnat/ui/dialog.js')"></script> + + #set ($appJS = true) + +#else + + <!-- AppJS is loaded --> + +#end diff --git a/src/main/webapp/xnat-templates/navigations/BaseJS.vm b/src/main/webapp/xnat-templates/navigations/BaseJS.vm new file mode 100644 index 0000000000000000000000000000000000000000..8743a995a912307f5ae23836520566e789c41569 --- /dev/null +++ b/src/main/webapp/xnat-templates/navigations/BaseJS.vm @@ -0,0 +1,50 @@ +## Base JavaScript files + +## only load once +#if (!$baseJS) + + <!-- load polyfills before ANY other JavaScript --> + <script src="$content.getURI('scripts/polyfills.js')"></script> + + <!-- set global vars that are used often --> + <script> + + var XNAT = XNAT || {}; + var serverRoot = "$content.getURI('')"; + var csrfToken = "$!data.getSession().getAttribute("XNAT_CSRF")"; + var showReason = typeof $showReason != 'undefined' ? $showReason : null; + var requireReason = typeof $requireReason != 'undefined' ? $showReason : null; + + </script> + ## separate script tags so not everything breaks if showReason or requireReason blows up + + <!-- XNAT global functions (no dependencies) --> + <script src="$content.getURI('scripts/globals.js')"></script> + + <!-- required libraries --> + <script src="$content.getURI('scripts/lib/loadjs/loadjs.js')"></script> + <script src="$content.getURI('scripts/lib/jquery/jquery.min.js')"></script> + <script src="$content.getURI('scripts/lib/jquery/jquery-migrate-1.2.1.min.js')"></script> + <script> + // alias jQuery to jq + var jq = jQuery; + </script> + + <!-- jQuery plugins --> + <link rel="stylesheet" type="text/css" href="$content.getURI('scripts/lib/jquery-plugins/chosen/chosen.min.css?v=1.7.0a1')"> + <script src="$content.getURI('scripts/lib/jquery-plugins/chosen/chosen.jquery.min.js')"></script> + <script src="$content.getURI('scripts/lib/jquery-plugins/jquery.maskedinput.min.js')"></script> + + <!-- other libraries --> + <script src="$content.getURI('scripts/lib/spawn/spawn.js')"></script> + + <!-- XNAT utility functions --> + <script src="$content.getURI('scripts/utils.js')"></script> + + #set ($baseJS = true) + +#else + + <!-- BaseJS is loaded --> + +#end diff --git a/src/main/webapp/xnat-templates/navigations/HeaderIncludes.vm b/src/main/webapp/xnat-templates/navigations/HeaderIncludes.vm index 9368f855816a9f23c9138b4ca2c45f6bc0bc5d9e..6de326674da63e26d033e1dd817613bf0b6aad5e 100755 --- a/src/main/webapp/xnat-templates/navigations/HeaderIncludes.vm +++ b/src/main/webapp/xnat-templates/navigations/HeaderIncludes.vm @@ -15,56 +15,12 @@ <meta http-equiv="expires" content="-1"> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT"> -<!-- load polyfills before ANY other JavaScript --> -<script type="text/javascript" src="$content.getURI('scripts/polyfills.js')"></script> -<!-- set global vars that are used often --> -<script type="text/javascript"> +## pull in the base JavaScript files +$navigation.setTemplate("/BaseJS.vm") - var serverRoot = "$content.getURI('')"; - var csrfToken = "$!data.getSession().getAttribute("XNAT_CSRF")"; - var showReason = typeof $showReason != 'undefined' ? $showReason : null; - var requireReason = typeof $requireReason != 'undefined' ? $showReason : null; -</script> -## separate script tags so not everything breaks if showReason or requireReason blows up - -<!-- XNAT global functions (no dependencies) --> -<script type="text/javascript" src="$content.getURI('scripts/globals.js')"></script> - -<!-- required libraries --> <script> - // loads minified versions by default - // add ?debug=true to the query string - // or #debug to the url hash to load - // the non-minified versions - writeScripts([ - scriptUrl('lib/loadjs/loadjs'), - scriptUrl('lib/jquery/jquery|.min'), - scriptUrl('lib/jquery/jquery-migrate-1.2.1|.min'), - ]); -</script> -##<script type="text/javascript" src="$content.getURI('scripts/lib/loadjs/loadjs.js')"></script> -##<script type="text/javascript" src="$content.getURI('scripts/lib/jquery/jquery.min.js')"></script> -##<script type="text/javascript" src="$content.getURI('scripts/lib/jquery/jquery-migrate-1.2.1.min.js')"></script> -<script type="text/javascript"> - // use 'jq' to avoid _possible_ conflicts with Velocity - var jq = jQuery; -</script> - -<!-- jQuery plugins --> -<link rel="stylesheet" type="text/css" href="$content.getURI('scripts/lib/jquery-plugins/chosen/chosen.min.css?v=1.7.0a1')"> -<script type="text/javascript" src="$content.getURI('scripts/lib/jquery-plugins/chosen/chosen.jquery.min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/lib/jquery-plugins/jquery.maskedinput.min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/lib/jquery-plugins/jquery.spawn.js')"></script> - -<!-- other libraries --> -<script type="text/javascript" src="$content.getURI('scripts/lib/spawn/spawn.js')"></script> - -<!-- XNAT utility functions --> -<script type="text/javascript" src="$content.getURI('scripts/utils.js')"></script> - -<script type="text/javascript"> /* * XNAT global namespace object, which will not be overwriten if @@ -206,7 +162,7 @@ })(XNAT.data.todaysDate); </script> -<script type="text/javascript"> +<script> // initialize "Chosen" menus on DOM load // all <select class="chosen-menu"> elements // will be converted @@ -214,39 +170,43 @@ // the jQuery DOM-ready queue jq(function(){chosenInit()}); </script> -<script type="text/javascript" src="$content.getURI('scripts/xdat.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/DynamicJSLoad.js')"></script> +<script src="$content.getURI('scripts/xdat.js')"></script> +<script src="$content.getURI('scripts/DynamicJSLoad.js')"></script> <!-- YAHOO USER INTERFACE files below here --> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/yahoo-dom-event/yahoo-dom-event.js')"></script> -##<script type="text/javascript" src="$content.getURI('scripts/yui/build/event/event.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/event/event-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/container/container-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/menu/menu-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/element/element-beta-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/button/button-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/connection/connection-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/treeview/treeview-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/cookie/cookie-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/tabview/tabview-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/datasource/datasource-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/resize/resize-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/dragdrop/dragdrop-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/datatable/datatable-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/paginator/paginator-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/json/json-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/xnat_loader.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/LeftBarTreeView.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/justification/justification.js')"></script> -<script type="text/javascript"> +<script src="$content.getURI('scripts/yui/build/yahoo-dom-event/yahoo-dom-event.js')"></script> +##<script src="$content.getURI('scripts/yui/build/event/event.js')"></script> +<script src="$content.getURI('scripts/yui/build/event/event-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/container/container-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/menu/menu-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/element/element-beta-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/button/button-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/connection/connection-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/treeview/treeview-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/cookie/cookie-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/tabview/tabview-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/datasource/datasource-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/resize/resize-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/dragdrop/dragdrop-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/datatable/datatable-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/paginator/paginator-min.js')"></script> +<script src="$content.getURI('scripts/yui/build/json/json-min.js')"></script> +<script src="$content.getURI('scripts/yui/xnat_loader.js')"></script> +<script src="$content.getURI('scripts/LeftBarTreeView.js')"></script> +<script src="$content.getURI('scripts/justification/justification.js')"></script> +<script> // The YUIDOM alias is used throughout XNAT var YUIDOM = YAHOO.util.Dom; XNAT.dom = getObject(XNAT.dom||{}); - XNAT.dom.addFormCSRF = function(__form){ - __form = isDefined(__form) ? $$(__form) : jq('form'); - __form.append('<input type="hidden" name="XNAT_CSRF" value="' + csrfToken + '">') + XNAT.dom.addFormCSRF = function(form){ + $$(form||'form').each(function(){ + var form$ = $(this); + if (!form$.has('input[name="XNAT_CSRF"]').length){ + form$.append('<input type="hidden" name="XNAT_CSRF" value="' + csrfToken + '">') + } + }); }; jq(function(){ @@ -260,29 +220,19 @@ <!-- YUI css --> <link rel="stylesheet" type="text/css" href="$content.getURI('scripts/yui/build/assets/skins/sam/skin.css?v=1.7.0a1')"> -<!-- xdat.css and xnat.css loaded last to override YUI styles --> -<link rel="stylesheet" type="text/css" href="$content.getURI('style/app.css?v=1.7.0a1')"> -##<link rel="stylesheet" type="text/css" href="$content.getURI('style/xnat.css?v=1.7.0a1')"> -##<link rel="stylesheet" type="text/css" href="$content.getURI('style/icons.css?v=1.7.0a1')"> +<!-- date input stuff --> +<link type="text/css" rel="stylesheet" href="$content.getURI('scripts/yui/build/calendar/assets/skins/sam/calendar.css?v=1.7.0a1')"> +##<script src="$content.getURI('scripts/yui/build/calendar/calendar.js')"></script> +<script src="$content.getURI('scripts/yui/build/calendar/calendar-min.js')"></script> +<script src="$content.getURI('scripts/ezCalendar.js')"></script> + -<link rel="stylesheet" type="text/css" href="$content.getURI('scripts/xmodal-v1/xmodal.css?v=1.7.0a1')"> -<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> +## pull in the XNAT app JavaScript files +$navigation.setTemplate("/AppJS.vm") -<link rel="stylesheet" type="text/css" href="$content.getURI('scripts/tabWrangler/tabWrangler.css?v=1.7.0a1')"> -<script type="text/javascript" src="$content.getURI('scripts/tabWrangler/tabWrangler.js')"></script> -<!-- date input stuff --> -<link type="text/css" rel="stylesheet" href="$content.getURI('scripts/yui/build/calendar/assets/skins/sam/calendar.css?v=1.7.0a1')"> -##<script type="text/javascript" src="$content.getURI('scripts/yui/build/calendar/calendar.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/yui/build/calendar/calendar-min.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/ezCalendar.js')"></script> +<link rel="stylesheet" type="text/css" href="$content.getURI('scripts/tabWrangler/tabWrangler.css?v=1.7.0a1')"> +<script src="$content.getURI('scripts/tabWrangler/tabWrangler.js')"></script> -<!-- XNAT JLAPI scripts --> -<script type="text/javascript" src="$content.getURI('scripts/xnat/url.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/xnat/xhr.js')"></script> -##<script type="text/javascript" src="$content.getURI('scripts/xnat/widget.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/xnat/ui/popup.js')"></script> -<script type="text/javascript" src="$content.getURI('scripts/xnat/ui/dialog.js')"></script> #addGlobalCustomScreens("header") diff --git a/src/main/webapp/xnat-templates/navigations/htmlOpen.vm b/src/main/webapp/xnat-templates/navigations/htmlOpen.vm index 1e874a5dded171926a5181a4ee804f6e97f40cb1..f2b595ab704525605adf0587d783e93e47e9bb46 100644 --- a/src/main/webapp/xnat-templates/navigations/htmlOpen.vm +++ b/src/main/webapp/xnat-templates/navigations/htmlOpen.vm @@ -1,12 +1,8 @@ <!DOCTYPE html> ##Copyright 2005 Harvard University / Howard Hughes Medical Institute (HHMI) All Rights Reserved -<!--[if lt IE 7]> <html class="ie ie6 ltie7 ltie8 ltie9 ltie10 no-js"> <![endif]--> -<!--[if IE 7]> <html class="ie ie7 ltie8 ltie9 ltie10 no-js"> <![endif]--> -<!--[if IE 8]> <html class="ie ie8 ltie9 ltie10 no-js"> <![endif]--> -<!--[if IE 9]> <html class="ie ie9 ltie10 no-js"> <![endif]--> -<!--[if gt IE 9]><!--> <html class="no-js"> <!--<![endif]--> -##<!-- the "no-js" class is for Modernizr - are we even using that? --> - +<!--[if lt IE 9]><html class="ie ie8 ltie9 ltie10"><![endif]--> +<!--[if IE 9]><html class="ie ie9 ltie10"><![endif]--> +<!--[if gt IE 9]><!--><html><!--<![endif]--> <head> <script type="text/javascript"> var XNAT = {}; diff --git a/src/main/webapp/xnat-templates/screens/Basic.vm b/src/main/webapp/xnat-templates/screens/Basic.vm new file mode 100644 index 0000000000000000000000000000000000000000..98eb09a9107efaa28f6ac5016efb7c652a00d4d0 --- /dev/null +++ b/src/main/webapp/xnat-templates/screens/Basic.vm @@ -0,0 +1,32 @@ +## There's not a Java class file for this template yet. +###* @vtlvariable name="displayManager" type="org.nrg.xdat.display.DisplayManager" *# +###* @vtlvariable name="par_count" type="java.lang.Integer" *# +###* @vtlvariable name="data" type="org.apache.turbine.util.RunData" *# +###* @vtlvariable name="turbineUtils" type="org.nrg.xdat.turbine.utils.TurbineUtils" *# +###* @vtlvariable name="siteConfig" type="java.util.Properties" *# +###* @vtlvariable name="content" type="org.apache.turbine.services.pull.tools.ContentTool" *# +#set ($template = $data.getTemplateInfo()) +$!template.setLayoutTemplate("Basic.vm") +<head> + <!-- start xnat-templates/screens/Basic.vm --> + + ## base JavaScript libraries + #parse("/navigations/BaseJS.vm") + + ## XNAT css and JLAPI scripts + #parse("/navigations/AppJS.vm") + +</head> +<body id="basic-page" class="xnat app basic"> + + <!-- Bare-bones HTML file. No YUI files and only --> + <!-- essential js and css files for new pages. --> + + + <!-- ================= --> + <!-- CONTENT GOES HERE --> + <!-- ================= --> + + + <!-- end xnat-templates/screens/Basic.vm --> +</body> \ No newline at end of file diff --git a/src/main/webapp/xnat-templates/screens/Blank.vm b/src/main/webapp/xnat-templates/screens/Blank.vm new file mode 100644 index 0000000000000000000000000000000000000000..454822f7fb61a882b025a1a29375262c25208a3c --- /dev/null +++ b/src/main/webapp/xnat-templates/screens/Blank.vm @@ -0,0 +1,4 @@ +#set ($template = $data.getTemplateInfo()) +$!template.setLayoutTemplate("Content.vm") + +<p>It's blank.</p>