From 312d0f3f01c1038e8a38bc42b99dbda33719b27a Mon Sep 17 00:00:00 2001 From: "Mark M. Florida" <markflorida@wustl.edu> Date: Mon, 25 Apr 2016 20:33:07 -0500 Subject: [PATCH] Adding changes from last commit on custom-page branch - I want to get ONLY these changes into the master branch - there's probably a better way to do this... --- .../webapp/scripts/xnat/app/customPage.js | 15 +- .../webapp/xnat-templates/layouts/Basic.vm | 9 ++ .../webapp/xnat-templates/layouts/Content.vm | 11 ++ .../xnat-templates/navigations/AppJS.vm | 26 ++++ .../xnat-templates/navigations/BaseJS.vm | 50 +++++++ .../navigations/HeaderIncludes.vm | 136 ++++++------------ .../xnat-templates/navigations/htmlOpen.vm | 10 +- .../webapp/xnat-templates/screens/Basic.vm | 32 +++++ .../webapp/xnat-templates/screens/Blank.vm | 4 + 9 files changed, 186 insertions(+), 107 deletions(-) create mode 100644 src/main/webapp/xnat-templates/layouts/Basic.vm create mode 100644 src/main/webapp/xnat-templates/layouts/Content.vm create mode 100644 src/main/webapp/xnat-templates/navigations/AppJS.vm create mode 100644 src/main/webapp/xnat-templates/navigations/BaseJS.vm create mode 100644 src/main/webapp/xnat-templates/screens/Basic.vm create mode 100644 src/main/webapp/xnat-templates/screens/Blank.vm diff --git a/src/main/webapp/scripts/xnat/app/customPage.js b/src/main/webapp/scripts/xnat/app/customPage.js index 3dd20bd8..b2290809 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 00000000..b0f4c7f5 --- /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 00000000..d4a7e632 --- /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 00000000..21060b3c --- /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 00000000..8743a995 --- /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 9368f855..6de32667 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 1e874a5d..f2b595ab 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 00000000..98eb09a9 --- /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 00000000..454822f7 --- /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> -- GitLab