From cef78f16c3a3a54ff9ed8a9dc4080211ed724dff Mon Sep 17 00:00:00 2001
From: "Mark M. Florida" <mflorida@gmail.com>
Date: Mon, 2 May 2016 16:12:28 -0500
Subject: [PATCH] Cleanup and tweaks.

---
 src/main/webapp/page/admin/content.jsp        | 68 +------------------
 .../data/config/site-admin-sample-new.yaml    | 39 +++++++++--
 src/main/webapp/page/admin/tabs.js            |  3 +-
 src/main/webapp/scripts/lib/spawn/spawn.js    |  4 ++
 src/main/webapp/scripts/xnat/spawner.js       | 19 +++---
 5 files changed, 49 insertions(+), 84 deletions(-)

diff --git a/src/main/webapp/page/admin/content.jsp b/src/main/webapp/page/admin/content.jsp
index 687dfd47..fd16510e 100755
--- a/src/main/webapp/page/admin/content.jsp
+++ b/src/main/webapp/page/admin/content.jsp
@@ -30,55 +30,7 @@
 
                 </div>
 
-                <script>
-                    (function(){
-
-                        function fixSlashes(str){
-
-                            var HTTP = /^http:\/+/i;
-                            var HTTPS = /^https:\/+/i;
-                            var FTP = /^ftp:\/+/i;
-
-                            // initially remove multiple slashes
-                            str = str.replace(/\/+/g, '/');
-
-                            // if there's a protocol specified,
-                            // restore '//' to that
-                            if (HTTP.test(str)) {
-                                str = str.replace(HTTP, 'http://')
-                            }
-                            else if (HTTPS.test(str)) {
-                                str = str.replace(HTTPS, 'https://')
-                            }
-                            else if (FTP.test(str)) {
-                                str = str.replace(FTP, 'ftp://')
-                            }
-
-                            return str;
-
-                        }
-
-                        function setUrl(url){
-                            return XNAT.url.rootUrl(url);
-                            //return fixSlashes(PAGE.siteRoot + url);
-                        }
-
-                        function dataUrl(url){
-                            return setUrl('/page/admin/data' + url);
-                        }
-
-                        var getTabs = $.getJSON({
-                            url: dataUrl('/config/site-admin-sample-new.json'),
-                            success: function(obj){
-                                var adminTabs = XNAT.spawner.spawn(obj);
-                                adminTabs.render('#admin-config-tabs', true);
-                            }
-                        });
-
-
-
-                    })();
-                </script>
+                <script src="${sessionScope.siteRoot}/page/admin/tabs.js"></script>
 
             </div>
 
@@ -86,24 +38,6 @@
     </div>
     <!-- /#page-body -->
 
-    <div id="page-footer">
-        <div class="pad">
-            <div id="mylogger"></div>
-        </div>
-    </div>
-    <!-- /#page-footer -->
-
-    <div id="sticky-footer">
-        <div>
-            <div class="pad">
-                <a class="xnat-version" target="_blank" href="http://www.xnat.org/" style="">XNAT v1.7</a>
-                <a id="xnat_power" class="pull-right" target="_blank" href="http://www.xnat.org/" style="">
-                    <img src="${sessionScope.siteRoot}/images/xnat_power_small.jpg">
-                </a>
-            </div>
-        </div>
-    </div>
-
     <div id="xnat-scripts">
         <script>
             //        $(window).load(function(){
diff --git a/src/main/webapp/page/admin/data/config/site-admin-sample-new.yaml b/src/main/webapp/page/admin/data/config/site-admin-sample-new.yaml
index e6175fcf..14018dc2 100644
--- a/src/main/webapp/page/admin/data/config/site-admin-sample-new.yaml
+++ b/src/main/webapp/page/admin/data/config/site-admin-sample-new.yaml
@@ -11,24 +11,19 @@ root:
         projectCustomization: Project Customization
         advanced: Advanced XNAT Settings
     contains: tabs
-
     tabs:  # this property name is the same as 'contains', so it will be treated like 'contents'
-
         siteSetup:
             kind: tab
             name: siteSetup
             label: Site Setup
             group: xnatSetup
             contains: panels # the value for 'contains' can be a custom name for 'contents'
-
             panels:
-
                 siteInfo:
                     kind: panel.form
                     name: siteInfo
                     label: Site Information
                     contents:
-
                         siteId:
                             kind: input.text
                             name: siteId
@@ -38,12 +33,10 @@ root:
                                 id: site-id
                                 style:
                                   display: block
-
                         adminEmail:
                             kind: input.email
                             name: adminEmail
                             label: Administrator Email Address
-
                         someInfo:
                             #kind: element
                             tag: div.message
@@ -52,3 +45,35 @@ root:
                                 style:
                                     padding: 20px
                                     color: red
+        security:
+            kind: tab
+            name: security
+            label: Security
+            contents:
+                generalSecuritySettings:
+                    kind: panel.form
+                    name: generalSecuritySettings
+                    label: General Site Security Settings
+                    contents:
+                        securityChannel:
+                            kind: element
+                            tag: select
+                            name: securityChannel
+                            label: Security Channel
+                            contains: options
+                            options:
+                                http:
+                                    tag: option
+                                    name: http
+                                    value: http
+                                https:
+                                    tag: option
+                                    name: https
+                                    value: https
+                            config:
+                                id: security-channel
+                                title: Security Channel
+
+
+
+
diff --git a/src/main/webapp/page/admin/tabs.js b/src/main/webapp/page/admin/tabs.js
index 73aea0c4..9b437147 100644
--- a/src/main/webapp/page/admin/tabs.js
+++ b/src/main/webapp/page/admin/tabs.js
@@ -26,7 +26,8 @@
         success: function(data){
             var json = YAML.parse(data);
             var adminTabs = XNAT.spawner.spawn(json);
-            console.log(adminTabs);
+            adminTabs.render('#admin-config-tabs > .xnat-tab-content');
+            XNAT.app.adminTabs = adminTabs;
         }
     });
 
diff --git a/src/main/webapp/scripts/lib/spawn/spawn.js b/src/main/webapp/scripts/lib/spawn/spawn.js
index 602acd0d..c0d0f7ff 100644
--- a/src/main/webapp/scripts/lib/spawn/spawn.js
+++ b/src/main/webapp/scripts/lib/spawn/spawn.js
@@ -331,6 +331,10 @@
         // alias for convenience
         el.html = el.outerHTML;
 
+        el.get = function(){
+            return el;
+        };
+
         return el;
 
     }
diff --git a/src/main/webapp/scripts/xnat/spawner.js b/src/main/webapp/scripts/xnat/spawner.js
index 5c0f1bbf..c75cabcf 100644
--- a/src/main/webapp/scripts/xnat/spawner.js
+++ b/src/main/webapp/scripts/xnat/spawner.js
@@ -101,7 +101,9 @@ var XNAT = getObject(XNAT);
                 // only spawn elements with defined methods
                 if (isFunction(method)) {
 
-                    // 'spawnedElement' item will be an HTML element
+                    // 'spawnedElement' item will be an
+                    // object with a .get() method that
+                    // will retrieve the spawned item
                     spawnedElement = method(prop);
 
                     // add spawnedElement to the master frag
@@ -121,6 +123,7 @@ var XNAT = getObject(XNAT);
             // a property matching the value of either 'contains' or 'kind'
             if (prop.contains || prop.contents || prop.content || prop.children || prop[prop.kind]) {
                 prop.contents = prop[prop.contains] || prop.contents || prop.content || prop.children || prop[prop.kind];
+                // if there's a 'target' property, put contents in there
                 if (spawnedElement.target) {
                     $spawnedElement = $(spawnedElement.target);
                 }
@@ -133,13 +136,18 @@ var XNAT = getObject(XNAT);
         });
 
         _spawn.spawned = frag;
+        
         _spawn.element = frag;
 
-        _spawn.children = $frag.contents();
+        _spawn.children = frag.children;
 
         _spawn.get = function(){
             return frag;
         };
+        
+        _spawn.getContents = function(){
+            return $frag.contents();    
+        };
 
         _spawn.render = function(element, empty){
             var $el = $$(element);
@@ -153,13 +161,6 @@ var XNAT = getObject(XNAT);
 
         _spawn.foo = '(spawn.foo)';
 
-        // console.log('spawned:')
-        // console.log(frag);
-        console.log('children:');
-        console.log(_spawn.children);
-        // console.log('get():')
-        // console.log(_spawn.get());
-
         return _spawn;
 
     };
-- 
GitLab