diff --git a/src/main/webapp/scripts/xnat/ui/templates.js b/src/main/webapp/scripts/xnat/ui/templates.js index 904219c1882be5f1e9a5f9ef8b945d94c49273b9..9542f910640908be555ca6d4b1481b5eb840be93 100644 --- a/src/main/webapp/scripts/xnat/ui/templates.js +++ b/src/main/webapp/scripts/xnat/ui/templates.js @@ -207,7 +207,7 @@ var XNAT = getObject(XNAT); if (hasValue && opts.value.toString().indexOf(doEval) === 0) { opts.value = (opts.value.split(doEval)[1]||'').trim(); try { - $element.val(eval(opts.value)).change(); + $element.changeVal(eval(opts.value)); } catch (e) { $element.val('').change(); @@ -240,8 +240,8 @@ var XNAT = getObject(XNAT); // add 'before' content before the core element if (opts.beforeElement) { - opts.beforeElement = stringable(opts.beforeElement) ? [opts.beforeElement] : ''; - inner.push(spawn('span.before', opts.beforeElement)); + opts.beforeElement = stringable(opts.beforeElement) ? opts.beforeElement : ''; + inner.push(opts.beforeElement); } @@ -261,8 +261,8 @@ var XNAT = getObject(XNAT); // add 'after' content after the core element if (opts.afterElement) { - opts.afterElement = stringable(opts.afterElement) ? [opts.afterElement] : ''; - inner.push(spawn('span.after', opts.afterElement)); + opts.afterElement = stringable(opts.afterElement) ? opts.afterElement : ''; + inner.push(opts.afterElement); } var $hiddenInput, hiddenInput; @@ -270,13 +270,13 @@ var XNAT = getObject(XNAT); // check buttons if value is true if (/checkbox/i.test(element.type||'')) { - element.checked = /true|checked/i.test(opts.checked||element.value||''); + element.checked = /^(true|checked|1)$/gi.test((opts.checked||element.value||'').trim()); // add a hidden input to capture the checkbox/radio value $hiddenInput = $.spawn('input.proxy', { type: 'hidden', name: element.name, - value: element.checked ? (element.value || opts.value || element.checked || 'true') : 'false' + value: element.checked ? (element.value || opts.value || element.checked || true) : false }); hiddenInput = $hiddenInput[0]; @@ -284,14 +284,32 @@ var XNAT = getObject(XNAT); // add [data-value] attribute $hiddenInput.dataAttr('value', hiddenInput.value); - // change the value of the hidden input onclick - element.onclick = function(){ - // if the checkbox value is boolean, - // match the value to the 'checked' state - if (/true|false/i.test(this.value)) { - this.value = this.checked; + element.onclick = function(e){ + var _val = this.value+''; + // shift-click a checkbox (or switchbox) to + // switch between boolean true/false and 1/0 + if (e.shiftKey) { + if (/^(1|0)$/g.test(_val)) { + _val = _val === '1' ? 'true' : 'false'; + } + else if (/^(true|false)$/gi.test(_val)) { + _val = _val === 'true' ? '1' : '0'; + } } - hiddenInput.value = this.checked ? (this.value || this.checked || 'true') : 'false'; + this.value = _val; + }; + + // change the value of the hidden input + // when 'controller' input changes + element.onchange = function(){ + var _val = this.value+''; + if (/^(1|0)$/g.test(_val)) { + _val = this.checked ? '1' : '0'; + } + else if (/^(true|false)$/gi.test(_val)) { + _val = this.checked ? 'true' : 'false'; + } + this.value = hiddenInput.value = _val; $hiddenInput.toggleClass('dirty'); }; diff --git a/src/main/webapp/xdat-templates/layouts/Noninteractive.vm b/src/main/webapp/xdat-templates/layouts/Noninteractive.vm index 5607a73797a9f3d32996125d6e9aeb0c2ee85581..66740c7fcd5a1f5b965495a746525dbcd9d7f74b 100644 --- a/src/main/webapp/xdat-templates/layouts/Noninteractive.vm +++ b/src/main/webapp/xdat-templates/layouts/Noninteractive.vm @@ -26,6 +26,9 @@ ## #end </script> + <script type="text/javascript" src="$content.getURI("scripts/polyfills.js")"></script> + <script type="text/javascript" src="$content.getURI("scripts/globals.js")"></script> + <script type="text/javascript"> var serverRoot = "$content.getURI('')"; diff --git a/src/main/webapp/xnat-templates/screens/InactiveAccount.vm b/src/main/webapp/xnat-templates/screens/InactiveAccount.vm index 22b1916d1c2ffd02c5477faa49b80241f365957a..c0c4a83d3e37291d6fa600cecc8396dddba565b8 100644 --- a/src/main/webapp/xnat-templates/screens/InactiveAccount.vm +++ b/src/main/webapp/xnat-templates/screens/InactiveAccount.vm @@ -67,7 +67,7 @@ $page.setBgColor($ui.bgcolor) </div> <script type="text/javascript"> - (function () { + $(function () { function validEmailFormat(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; @@ -142,9 +142,9 @@ $page.setBgColor($ui.bgcolor) jQuery('#send-activation-email-link').click(function (e) { e.preventDefault(); - var __modal, __emailInput; + var requestModal, __modal, __emailInput; - var requestModal = {}; + window.requestModal = requestModal = {}; //requestModal.id = 'request-modal' requestModal.width = 400; requestModal.height = 200; @@ -200,5 +200,5 @@ $page.setBgColor($ui.bgcolor) xmodal.open(requestModal); }); - })(); + }); </script>