Browse Source

Basis Website

v0.0.11
John Haverlack 3 years ago
parent
commit
4cf30375db
  1. 0
      LICENSE.md
  2. 12
      README.md
  3. 12
      config/skq-it-am-config.json
  4. 55
      index.js
  5. 179
      package-lock.json
  6. 5
      package.json
  7. 338
      skq_modules/skq-lib/index.js
  8. 4
      start-server.sh
  9. 4
      web/root/.gitignore
  10. 114
      web/root/README.md
  11. 261
      web/root/custom/base.html
  12. 44
      web/root/custom/content.html.disabled
  13. 4335
      web/root/custom/css/all.css
  14. 5
      web/root/custom/css/all.min.css
  15. 324
      web/root/custom/css/base.css
  16. 14
      web/root/custom/css/brands.css
  17. 5
      web/root/custom/css/brands.min.css
  18. 413
      web/root/custom/css/cfos-theme.css
  19. 99
      web/root/custom/css/cfos.css
  20. 119
      web/root/custom/css/cfosgroups.css
  21. 4302
      web/root/custom/css/fontawesome.css
  22. 5
      web/root/custom/css/fontawesome.min.css
  23. 93
      web/root/custom/css/jjsonviewer.css
  24. 57
      web/root/custom/css/jquery.json-viewer.css
  25. 15
      web/root/custom/css/regular.css
  26. 5
      web/root/custom/css/regular.min.css
  27. 62
      web/root/custom/css/satnag-icons.css
  28. 16
      web/root/custom/css/solid.css
  29. 5
      web/root/custom/css/solid.min.css
  30. 346
      web/root/custom/css/svg-with-js.css
  31. 5
      web/root/custom/css/svg-with-js.min.css
  32. 207
      web/root/custom/css/uaf.css
  33. 207
      web/root/custom/css/uaf.important.css
  34. 2166
      web/root/custom/css/v4-shims.css
  35. 5
      web/root/custom/css/v4-shims.min.css
  36. BIN
      web/root/custom/fonts/satnag-icons.eot
  37. 22
      web/root/custom/fonts/satnag-icons.svg
  38. BIN
      web/root/custom/fonts/satnag-icons.ttf
  39. BIN
      web/root/custom/fonts/satnag-icons.woff
  40. BIN
      web/root/custom/img/CFOS-850x850.png
  41. BIN
      web/root/custom/img/CFOS.png
  42. BIN
      web/root/custom/img/NSF.png
  43. BIN
      web/root/custom/img/SKQLogoWShip.png
  44. BIN
      web/root/custom/img/SKQShipLogo-White.png
  45. BIN
      web/root/custom/img/SKQShipLogo.png
  46. BIN
      web/root/custom/img/SMALL-CFOS.jpg
  47. BIN
      web/root/custom/img/UAF-txt.png
  48. BIN
      web/root/custom/img/UAF.png
  49. BIN
      web/root/custom/img/UAFLogo_A.png
  50. BIN
      web/root/custom/img/UAFLogo_A_black.png
  51. BIN
      web/root/custom/img/UAFLogo_A_blue.png
  52. BIN
      web/root/custom/img/cfos-mkdocs-template.png
  53. BIN
      web/root/custom/img/cfosblack.png
  54. BIN
      web/root/custom/img/favicon.ico
  55. BIN
      web/root/custom/img/nsf-logo-black.png
  56. BIN
      web/root/custom/img/sikuliaqlogo.jpg
  57. BIN
      web/root/custom/img/sikuliaqlogo.png
  58. BIN
      web/root/custom/img/skq-network-diagram.png
  59. BIN
      web/root/custom/img/uaf/GI_logo.png
  60. BIN
      web/root/custom/img/uaf/UAFLogo.png
  61. BIN
      web/root/custom/img/uaf/cfositLogo.gif
  62. BIN
      web/root/custom/img/uaf/naturally-inspiring-theme/bgHeader.jpg
  63. BIN
      web/root/custom/img/uaf/naturally-inspiring-theme/texture-bar.jpg
  64. BIN
      web/root/custom/img/uaf/naturally-inspiring-theme/uafLogo-header.png
  65. BIN
      web/root/custom/img/uaf/oitLogo.gif
  66. BIN
      web/root/custom/img/uaflogoBlue.png
  67. BIN
      web/root/custom/img/unols-logo.png
  68. BIN
      web/root/custom/img/unols-title-logo.png
  69. 1885
      web/root/custom/js/CHANGES.md.incl
  70. 24
      web/root/custom/js/LICENSE
  71. 19
      web/root/custom/js/MathJax.js
  72. 188
      web/root/custom/js/README.md.incl
  73. 142
      web/root/custom/js/README.ru.md.incl
  74. 4294
      web/root/custom/js/all.js
  75. 5
      web/root/custom/js/all.min.js
  76. 557
      web/root/custom/js/brands.js
  77. 5
      web/root/custom/js/brands.min.js
  78. 247
      web/root/custom/js/cfosgroups.js
  79. 53
      web/root/custom/js/config/AM_CHTML-full.js
  80. 49
      web/root/custom/js/config/AM_CHTML.js
  81. 61
      web/root/custom/js/config/AM_HTMLorMML-full.js
  82. 55
      web/root/custom/js/config/AM_HTMLorMML.js
  83. 53
      web/root/custom/js/config/AM_SVG-full.js
  84. 47
      web/root/custom/js/config/AM_SVG.js
  85. 83
      web/root/custom/js/config/Accessible-full.js
  86. 77
      web/root/custom/js/config/Accessible.js
  87. 53
      web/root/custom/js/config/MML_CHTML-full.js
  88. 49
      web/root/custom/js/config/MML_CHTML.js
  89. 61
      web/root/custom/js/config/MML_HTMLorMML-full.js
  90. 56
      web/root/custom/js/config/MML_HTMLorMML.js
  91. 53
      web/root/custom/js/config/MML_SVG-full.js
  92. 49
      web/root/custom/js/config/MML_SVG.js
  93. 19
      web/root/custom/js/config/MMLorHTML.js
  94. 19
      web/root/custom/js/config/Safe.js
  95. 75
      web/root/custom/js/config/TeX-AMS-MML_HTMLorMML-full.js
  96. 69
      web/root/custom/js/config/TeX-AMS-MML_HTMLorMML.js
  97. 67
      web/root/custom/js/config/TeX-AMS-MML_SVG-full.js
  98. 63
      web/root/custom/js/config/TeX-AMS-MML_SVG.js
  99. 61
      web/root/custom/js/config/TeX-AMS_CHTML-full.js
  100. 57
      web/root/custom/js/config/TeX-AMS_CHTML.js

0
LICENSE.md

12
README.md

@ -2,3 +2,15 @@
Sikuliaq IT Asset Management
Cross Platform System Asset Management Data Collection Tool
# Goals
- Minimally invasive installation using Native system calls
- Runs without Admin Privileges
-
# TODO
- Check for Admin Permissions
- Windows PS calls
- Windows PS WGET
- Web Copy

12
config/skq-it-am-config.json

@ -0,0 +1,12 @@
{
"GLOBAL":{
"WEBUI_PORT":8411,
"RUN_AS_ADMIN":false,
"WEBUI_ROOT":{
"WEB_ROOT_DIR":"web/root/site"
},
"WEBUI_ADMIN":{
"WEB_ROOT_DIR":"web/root/site"
}
}
}

55
index.js

@ -2,3 +2,58 @@ var path = require('path')
var fs = require('fs')
const express = require('express')
const app = express()
var skqlib = require('./skq_modules/skq-lib')
// GLOBAL CONFIG
process['CONFIG'] = JSON.parse(fs.readFileSync(path.join(__dirname, 'config','skq-it-am-config.json'), 'utf8'))
process['CONFIG']['GLOBAL']['RUN_DIR'] = __dirname
process['CONFIG']['LOCAL']= skqlib.it_am_init()
// console.log(JSON.stringify(process['CONFIG'], null, 2))
// BEGIN DEV TEST FUNCTIONS - Disable for security purpose before deploying
app.use('/api/config', function(req, res) {
res.writeHead(200, {'Content-Type': 'application/json'})
res.end(JSON.stringify(process['CONFIG'], null, 2))
})
// END DEV TEST FUNCTIONS - Disable for security purpose before deploying
// API
// Web Config
app.use('/api/webconfig', function(req, res) {
res.writeHead(200, {'Content-Type': 'application/json'})
res.end(JSON.stringify(process['CONFIG']['LOCAL']['WEB'], null, 2))
})
// WebUI Admin
app.use('/admin', express.static(path.join(__dirname, process['CONFIG']['GLOBAL']['WEBUI_ADMIN']['WEB_ROOT_DIR'])))
// WebUI Root
app.use('/', express.static(path.join(__dirname, process['CONFIG']['GLOBAL']['WEBUI_ROOT']['WEB_ROOT_DIR'])))
// 404 Errors
app.use(function (req, res, next) {
res.status(404).send("404 Page not found: " + req.url )
var remote_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress
remote_ip = remote_ip.replace(/^\:\:ffff\:/, '') // IPv4 part only
console.log('ERR ' + res.statusCode + ' ' + req.method + ' ' + remote_ip + ' [' + req.headers['user-agent'] + '] ' + ' ' + req.url)
})
// Starting Express Web Service
app.listen(process['CONFIG']['GLOBAL']['WEBUI_PORT'], function () {
console.log("Sikuliaq Cyber Asset Manager Server")
console.log(" - Copyright (C) 2021 University of Alaska Fairbanks\n")
console.log("Status: STARTED")
for (i in process['CONFIG']['LOCAL']['HOST']['NETWORK']['IP_ADDR']['IPv4']) {
console.log(" WebUI: http://" + process['CONFIG']['LOCAL']['HOST']['NETWORK']['IP_ADDR']['IPv4'][i] + ':' + process['CONFIG']['GLOBAL']['WEBUI_PORT'])
}
for (i in process['CONFIG']['LOCAL']['HOST']['NETWORK']['IP_ADDR']['IPv6']) {
console.log(" WebUI: http://[" + process['CONFIG']['LOCAL']['HOST']['NETWORK']['IP_ADDR']['IPv6'][i] + ']:' + process['CONFIG']['GLOBAL']['WEBUI_PORT'])
}
console.log("\nNOTE: Be sure to open port " + process['CONFIG']['GLOBAL']['WEBUI_PORT'] + " to the above IP's\n on server and network firewalls.")
})

179
package-lock.json

@ -35,11 +35,26 @@
"type-is": "~1.6.17"
}
},
"bootstrap": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz",
"integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag=="
},
"bytes": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
},
"clipboard": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
"integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
"tiny-emitter": "^2.0.0"
}
},
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@ -63,6 +78,18 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@ -71,6 +98,11 @@
"ms": "2.0.0"
}
},
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@ -91,6 +123,14 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"requires": {
"once": "^1.4.0"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@ -101,6 +141,20 @@
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"execa": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
}
},
"express": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
@ -162,6 +216,22 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"requires": {
"pump": "^3.0.0"
}
},
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
"requires": {
"delegate": "^3.1.2"
}
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@ -192,6 +262,24 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
"is-admin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-admin/-/is-admin-3.0.0.tgz",
"integrity": "sha512-wOa3CXFJAu8BZ2BDtG9xYOOrsq6oiSvc2jFPy4X/HINx5bmJUcW8e+apItVbU2E7GIfBVaFVO7Zit4oAWtTJcw==",
"requires": {
"execa": "^1.0.0"
}
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -235,6 +323,19 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"requires": {
"path-key": "^2.0.0"
}
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@ -243,11 +344,29 @@
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
@ -262,6 +381,15 @@
"ipaddr.js": "1.9.1"
}
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@ -293,6 +421,16 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"send": {
"version": "0.17.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@ -336,11 +474,39 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"requires": {
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
},
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
},
"tiny-emitter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"toidentifier": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@ -369,6 +535,19 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"requires": {
"isexe": "^2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}

5
package.json

@ -4,7 +4,10 @@
"description": "Sikuliaq IT Asset Manager",
"main": "index.js",
"dependencies": {
"express": "^4.17.1"
"bootstrap": "^4.3.1",
"clipboard": "^2.0.8",
"express": "^4.17.1",
"is-admin": "^3.0.0"
},
"devDependencies": {},
"scripts": {

338
skq_modules/skq-lib/index.js

@ -0,0 +1,338 @@
var fs = require('fs')
var path = require('path')
var os = require('os')
const isAdmin = require('is-admin')
const crypto = require('crypto')
var http = require('http')
function it_am_init() {
let config = {}
// Admin Permission Test
if (running_as_admin() && !process['CONFIG']['RUN_AS_ADMIN']) {
console.log('WARNING: Cannot run with Administrative Permissions')
process.exit(1)
}
// Static Parameters
config['OS'] = {}
config['OS']['ARCH'] = process.arch
config['OS']['ENDIAN'] = os.endianness()
config['OS']['PLATFORM'] = os.platform()
config['OS']['RELEASE'] = os.release()
config['OS']['TYPE'] = os.type()
config['OS']['EOL'] = os.EOL
config['OS']['PATHSEP'] = path.sep
config['PROC'] = {}
config['PROC']['PID'] = process.pid
config['PROC']['RUN_DIR'] = process['CONFIG']['GLOBAL']['RUN_DIR']
config['PROC']['CWD'] = process.cwd()
config['PROC']['ARCH'] = process.arch
config['PROC']['PLATFORM'] = process.platform
config['PROC']['VERSIONS'] = process.versions
config['PROC']['ARGV'] = process.argv
config['PROC']['EXECPATH'] = process.execPath
//config['PROC']['ENV'] = process.env
config['HOST'] = {}
config['HOST']['HOSTNAME'] = os.hostname()
config['HOST']['HOST_ID'] = ''
config['HOST']['HW'] = {}
config['HOST']['HW']['CPUS'] = os.cpus()
for (c in config['HOST']['HW']['CPUS']) { delete config['HOST']['HW']['CPUS'][c]['times'] }
if(!config['HOST']['HW'].hasOwnProperty('CPU_CORES')) {
config['HOST']['HW']['CPU_CORES'] = config['HOST']['HW']['CPUS'].length
config['HOST']['HW']['CPU_MODEL'] = config['HOST']['HW']['CPUS'][0]['model']
}
config['HOST']['HW']['MEMORY_BYTES'] = os.totalmem()
config['HOST']['HW']['NETWORK'] = os.networkInterfaces()
config['HOST']['NETWORK'] = {}
config['HOST']['NETWORK']['IP_ADDR'] = {}
config['HOST']['NETWORK']['IP_ADDR']['IPv4'] = []
config['HOST']['NETWORK']['IP_ADDR']['IPv6'] = []
for (n in config['HOST']['HW']['NETWORK']) {
for (i in config['HOST']['HW']['NETWORK'][n]) {
if (!config['HOST']['HW']['NETWORK'][n][i]['internal'] && !config['HOST']['HW']['NETWORK'][n][i]['netmask'].match('ffff:ffff')) {
config['HOST']['NETWORK']['IP_ADDR'][ config['HOST']['HW']['NETWORK'][n][i]["family"] ].push(config['HOST']['HW']['NETWORK'][n][i]["address"])
}
}
}
// Load ABL App Configuration Parameters
config['PACKAGE'] = JSON.parse(fs.readFileSync(path.join(config['PROC']['RUN_DIR'],'package.json'), 'utf8'))
get_abl_id(config)
// Web CONFIG - Prune parameters for Web UI
config['WEB'] = {}
config['WEB']['WEBUI_PORT'] = process['CONFIG']['GLOBAL']['WEBUI_PORT']
config['WEB']['NETWORK'] = config['HOST']['NETWORK']
// console.log(JSON.stringify(config, null, 2))
return config
}
exports.it_am_init = it_am_init
function running_as_admin() { // Code Source: ABL Rolecall (http://appliedbitlogistics.io/)
let admin_perms = false
switch(os.platform()) {
case "linux":
if (os.userInfo['username'] == 'root' || os.userInfo()['uid'] == 0) {
admin_perms = true
}
break
case "darwin":
if (os.userInfo()['username'] == 'root' || os.userInfo()['uid'] == 0) {
admin_perms = true
}
break
case "win32":
let isAdmin = require('is-admin')
isAdmin().then(elevated => {
if (elevated) {
admin_perms = true
}
})
break
}
return admin_perms
}
function get_abl_id (cfg) { // Code Source: ABL Rolecall (http://appliedbitlogistics.io/)
// ABL ID
let abl_id = {}
switch (cfg['OS']['PLATFORM']) {
case 'linux':
try {
fs.accessSync('/var/lib/dbus/machine-id', fs.constants.R_OK);
cfg['HOST']['HOST_ID'] = crypto.createHash('sha256').update(fs.readFileSync('/var/lib/dbus/machine-id', 'utf8').replace(/\n$/, '')).digest('hex')
} catch (err) {
try {
fs.accessSync('/etc/machine-id', fs.constants.R_OK);
cfg['HOST']['HOST_ID'] = crypto.createHash('sha256').update(fs.readFileSync('/etc/machine-id', 'utf8').replace(/\n$/, '')).digest('hex')
} catch (err) {
console.error('ERROR: Missing: /var/lib/dbus/machine-id and /etc/machine-id');
}
}
try {
fs.accessSync('/etc/lsb-release', fs.constants.R_OK);
let line = fs.readFileSync('/etc/lsb-release', 'utf8').split(/\n/)
for (l in line) {
if (mch = line[l].match(/^DISTRIB_ID=(.*)$/)) {
cfg['OS']['DISTRO'] = mch[1].replace(/\"/g, '')
} else if (mch = line[l].match(/^DISTRIB_RELEASE=(.*)$/)) {
cfg['OS']['DISTRO_VERSION'] = mch[1].replace(/\"/g, '')
}
}
} catch (err) {
// console.log('WARNING: Missing /etc/lsb-release')
}
try {
fs.accessSync('/etc/os-release', fs.constants.R_OK);
let line = fs.readFileSync('/etc/os-release', 'utf8').split(/\n/)
for (l in line) {
if (mch = line[l].match(/^NAME=(.*)$/)) {
cfg['OS']['DISTRO'] = mch[1].replace(/\"/g, '')
} else if (mch = line[l].match(/^VERSION_ID=(.*)$/)) {
cfg['OS']['DISTRO_VERSION'] = mch[1].replace(/\"/g, '')
}
}
} catch(err) {
// console.log('WARNING: Missing /etc/os-release')
}
break;
case 'darwin':
let osxcmd = 'ioreg -rd1 -c IOPlatformExpertDevice | grep IOPlatformUUID|cut -d ' + "'" + '"' + "'" + ' -f4'
cfg['HOST']['HOST_ID'] = crypto.createHash('sha256').update(childProcess.execSync(osxcmd, { encoding: 'utf8' }).replace(/\n$/, '')).digest('hex')
osxcmd = 'sw_vers -productName'
cfg['OS']['DISTRO'] = childProcess.execSync(osxcmd, { encoding: 'utf8' }).replace(/\n$/, '')
osxcmd = 'sw_vers -productVersion'
cfg['OS']['DISTRO_VERSION'] = childProcess.execSync(osxcmd, { encoding: 'utf8' }).replace(/\n$/, '')
break;
case 'win32':
let wincmd = 'Reg Query "HKLM\\SOFTWARE\\Microsoft\\Cryptography"'
let machid = childProcess.execSync(wincmd, { encoding: 'utf8' })
let line = machid.split(/\n/)
for (l in line) {
if (mch = line[l].match(/MachineGuid\s+\S+\s+(\S+)/)) {
cfg['HOST']['HOST_ID'] = crypto.createHash('sha256').update(mch[1]).digest('hex')
}
}
wincmd = 'systeminfo'
line = childProcess.execSync(wincmd, { encoding: 'utf8' }).split(/\n/)
for (l in line) {
if (mch = line[l].match(/^OS\s+Name:\s+(.*)/)) {
cfg['OS']['DISTRO'] = mch[1]
} else if (mch = line[l].match(/^OS\s+Version:\s+(\S+)/)) {
cfg['OS']['DISTRO_VERSION'] = mch[1]
}
}
break;
default:
}
return abl_id
}
function tell_time (ts) {
var timeds = {} // Time Data Structure
var time = new Date()
if(ts) {
if(String(ts).match(/^\d+$/)) {
time = new Date(ts*1000)
} else {
time = new Date(ts)
}
}
timeds['LOCAL'] = {}
timeds['LOCAL']['YYYY'] = '' + time.getFullYear() + ''
if(time.getMonth() < 9) {
timeds['LOCAL']['MM'] = '0' + (time.getMonth() + 1) + ''
}else {
timeds['LOCAL']['MM'] = '' + (time.getMonth() + 1) + ''
}
if(time.getDate() <= 9) {
timeds['LOCAL']['DD'] = '0' + time.getDate() + ''
}else {
timeds['LOCAL']['DD'] = '' + time.getDate() + ''
}
if(time.getHours() <= 9) {
timeds['LOCAL']['hh'] = '0' + time.getHours() + '';
}else {
timeds['LOCAL']['hh'] = '' + time.getHours() + '';
}
if(time.getMinutes() <= 9) {
timeds['LOCAL']['mm'] = '0' + time.getMinutes() + '';
}else {
timeds['LOCAL']['mm'] = '' + time.getMinutes() + '';
}
if(time.getSeconds() <= 9) {
timeds['LOCAL']['ss'] = '0' + time.getSeconds() + '';
}else {
timeds['LOCAL']['ss'] = '' + time.getSeconds() + '';
}
timeds['LOCAL']['ms'] = time.getMilliseconds()
timeds['LOCAL']['YYYY-MM-DD'] = timeds['LOCAL']['YYYY'] + '-' + timeds['LOCAL']['MM'] + '-' + timeds['LOCAL']['DD'];
timeds['LOCAL']['hh:mm:ss'] = timeds['LOCAL']['hh'] + ':' + timeds['LOCAL']['mm'] + ':' + timeds['LOCAL']['ss'];
timeds['LOCAL']['YYYY-MM-DD hh:mm:ss'] = timeds['LOCAL']['YYYY-MM-DD'] + ' ' + timeds['LOCAL']['hh:mm:ss'];
timeds['LOCAL']['DOW'] = time.getDay();
// timeds['LOCAL']['DOY'] = '';
timeds['LOCAL']['WOY'] = get_week_of_year(time)[1] + 1;
timeds['LOCAL']['TZONE'] = time.getTimezoneOffset()/60;
timeds['UTC'] = {};
timeds['UTC']['YYYY'] = '' + time.getUTCFullYear() + '';
if(time.getUTCMonth() < 9) {
timeds['UTC']['MM'] = '0' + (time.getUTCMonth() + 1) + '';
}else {
timeds['UTC']['MM'] = '' + (time.getUTCMonth() + 1) + '';
}
if(time.getUTCDate() <= 9) {
timeds['UTC']['DD'] = '0' + time.getUTCDate() + '';
}else {
timeds['UTC']['DD'] = '' + time.getUTCDate() + '';
}
if(time.getUTCHours() <= 9) {
timeds['UTC']['hh'] = '0' + time.getUTCHours() + '';
}else {
timeds['UTC']['hh'] = '' + time.getUTCHours() + '';
}
if(time.getUTCMinutes() <= 9) {
timeds['UTC']['mm'] = '0' + time.getUTCMinutes() + '';
}else {
timeds['UTC']['mm'] = '' + time.getUTCMinutes() + '';
}
if(time.getUTCSeconds() <= 9) {
timeds['UTC']['ss'] = '0' + time.getUTCSeconds() + '';
}else {
timeds['UTC']['ss'] = '' + time.getUTCSeconds() + '';
}
timeds['UTC']['ms'] = time.getUTCMilliseconds()
timeds['UTC']['YYYY-MM-DD'] = timeds['UTC']['YYYY'] + '-' + timeds['UTC']['MM'] + '-' + timeds['UTC']['DD'];
timeds['UTC']['hh:mm:ss'] = timeds['UTC']['hh'] + ':' + timeds['UTC']['mm'] + ':' + timeds['UTC']['ss'];
timeds['UTC']['YYYY-MM-DD hh:mm:ss'] = timeds['UTC']['YYYY-MM-DD'] + ' ' + timeds['UTC']['hh:mm:ss'];
timeds['UTC']['ISO8601'] = timeds['UTC']['YYYY-MM-DD'] + 'T' + timeds['UTC']['hh:mm:ss'] + 'Z'
timeds['UTC']['TZONE'] = 0;
timeds['UTC']['DOW'] = time.getUTCDay();
timeds['UTC']['WOY'] = get_week_of_year(time)[1];
timeds['UTC']['EPOCH_MS'] = time.getTime();
timeds['UTC']['EPOCH'] = timeds['UTC']['EPOCH_MS']/1000;
timeds['UTC']['TIMESTAMP'] = Math.round(timeds['UTC']['EPOCH'])
timeds['UTC']['DOW'] = time.getUTCDay();
//timeds['UTC']['WOY'] = get_week_of_year(Date(timeds['UTC']['TIMESTAMP']))[1];
timeds['LOCAL']['TIMESTAMP'] = timeds['UTC']['TIMESTAMP'] - timeds['LOCAL']['TZONE'] * 3600
return timeds;
}
exports.tell_time = tell_time
function get_week_of_year( d ) {
https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php
// Copy date so don't modify original
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
// Set to nearest Thursday: current date + 4 - current day number
// Make Sunday's day number 7
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
// Get first day of year
var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
// Calculate full weeks to nearest Thursday
var weekNo = String(Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7));
// Return array of year and week number
if (weekNo <= 9) {
weekNo = '0' + weekNo
}
return [d.getUTCFullYear(), weekNo]
}
exports.get_week_of_year = get_week_of_year

4
start-server.sh

@ -11,10 +11,10 @@ rundir=`echo $0 |sed -r 's/\/start-server\.sh$//'`
node_ver='v14.17.0'
node_path="$rundir/nodejs/node-$node_ver-$os-$arch/bin/node"
echo $node_path
# echo $node_path
if [ -x "$node_path" ]; then
$node_path --version
$node_path $rundir/index.js
else
echo "ERROR: Missing Node.JS: $node_path"
exit 1

4
web/root/.gitignore

@ -0,0 +1,4 @@
*~
*\\*.html
node_modules/*
*.DS_Store

114
web/root/README.md

@ -0,0 +1,114 @@
# skq-mkdocs-template
Sikuliaq MkDocs Template
This MkDocs Template can be used to build new static html Sikuliaq websites.
## Requisites
- [Python](https://www.python.org/) Version 3 recommended
- [MkDocs](https://www.mkdocs.org/)
- NOTE: on some Linux systems and Macs you may need ```pip3``` for ```python3``` instead of ```pip``` in the following commands.
- ```sudo pip install mkdocs```
- ```sudo pip install mkdocs-pdf-export-plugin```
- ```sudo pip install mkdocs-bootstrap```
- ```sudo pip install https://github.com/mitya57/python-markdown-math/archive/master.zip```
- You will need MkDocs version 1.1 To test: ```mkdocs --version```
- If you have an older version, try upgrading with: ```sudo pip3 install -U mkdocs```
- [Node.js](https://nodejs.org/en/) or via [NVM](https://github.com/nvm-sh/nvm#installing-and-updating)
- ```curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash```
- ```nvm install --lts```
- Dev/Test [http-server](https://github.com/http-party/http-server#readme) ```npm install --global http-server``` (Requires Node.js)
- **http-server** is not required but provides a handy light weight web server for testing sites on your local computer.
- Learning [Markdown](https://www.markdowntutorial.com/)
- You can use any text/code editor, however [Atom](https://atom.io/) is fully featured and highly recommended.
- Source Code Manager (SCM) [Git](https://git-scm.com/) - While not necessary to build MkDocs sites Git is highly recommended to manage website content over time.
- This site has an introduction to using Git [https://github.alaska.edu/jehaverlack/GitTutorial](https://github.alaska.edu/jehaverlack/GitTutorial)
## Cloning a new site
You will need a UA Github (github.alaska.edu) account for the following:
```
git clone https://github.alaska.edu/skq/skq-mkdocs-template.git
```
```
cd skq-mkdocs-template
```
You will find the following directory structure:
```
skq-mkdocs-template/
├── custom (Custom HTML Libraries and Theme Styles)
├── docs (Site content source files)
├── mkdocs.yml (Master Configuration File)
├── README.md (This README.md doc)
└── site (MkDocs Generated Static HTML Site Files)
```
### Building the site
You will need to build your site after editing content or the configuration.
```
mkdocs build --clean
```
After building your static HTML site will be in the **site** directory
### Testing the site
To test your site, run the **http-server** that was installed with Node.js/NPM
```
http-server site
```
Point your browser to [http://localhost:8080](http://localhost:8080)
#### Create a New Page
```
touch docs/newpage.md
```
Edit the Markdown Code in your docs/newpage.md file:
```
# New Page
This is my new page
```
### Edit the site config
Edit mkdocs.yml
#### Edit the Menu
You will need to add your newpage.md to the navigation menu in mkdocs.yml
```
nav:
- <span class="fas fa-home"></span>: index.md
- Setup:
- Install: install.md
- Optional Tool: optional.md
- Cloning Site: cloning.md
- Build Site: build.md
- Testing Site: test.md
- Editing Content: editing.md
- Features:
- Search: search.md
- Swipe Nav: swipe.md
- Version: version.md
- Menu Nav: menu.md
- Code: code.md
- Equations: equations.md
- Footnotes: footnotes.md
- Icons: icons.md
- Bootstrap: bootstrap.md
- PDF: pdf.md
- About:
- Contact: contact.md
- NewPage: newpage.md
```
Next rebuild and reload the site in your browser.

261
web/root/custom/base.html

@ -0,0 +1,261 @@
<!DOCTYPE html>
<html lang="en">
<head>
{%- block site_meta %}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% if page and page.is_homepage %}<meta name="description" content="{{ config['site_description'] }}">{% endif %}
{% if config.site_author %}<meta name="author" content="{{ config.site_author }}">{% endif %}
{% if page and page.canonical_url %}<link rel="canonical" href="{{ page.canonical_url }}">{% endif %}
{% if config.site_favicon %}<link rel="shortcut icon" href="{{ config.site_favicon|url }}">
{% else %}<link rel="shortcut icon" href="{{ 'img/favicon.ico'|url }}">{% endif %}
{%- endblock %}
{%- block htmltitle %}
<title>{% if page and page.title and not page.is_homepage %}{{ page.title }} - {% endif %}{{ config.site_name }}</title>
{%- endblock %}
{%- block styles %}
<link href="{{ 'css/bootstrap.min.css'|url }}" rel="stylesheet">
<link href="{{ 'css/font-awesome.min.css'|url }}" rel="stylesheet">
<link href="{{ 'css/base.css'|url }}" rel="stylesheet">
{%- if config.theme.highlightjs %}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/{{ config.theme.hljs_style }}.min.css">
{%- endif %}
{%- for path in config['extra_css'] %}
<link href="{{ path|url }}" rel="stylesheet">
{%- endfor %}
{%- endblock %}
{%- block libs %}
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="{{ 'js/jquery-1.10.2.min.js'|url }}" defer></script>
<script src="{{ 'js/bootstrap.min.js'|url }}" defer></script>
{%- if config.theme.highlightjs %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
{%- for lang in config.theme.hljs_languages %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/{{lang}}.min.js"></script>
{%- endfor %}
<script>hljs.initHighlightingOnLoad();</script>
{%- endif %}
{%- endblock %}
{%- block analytics %}
{%- if config.google_analytics %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ config.google_analytics[0] }}', '{{ config.google_analytics[1] }}');
ga('send', 'pageview');
</script>
{%- endif %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
</head>
<body{% if page and page.is_homepage %} class="homepage"{% endif %}>
<div id="banner" style="position: relative; top: -70px; width: 100%; z-index:100;">
<div class="row">
<div id="banner-bar" class="col-sm-12">
<div style="width: 100%; padding: 10px;">
<a href="http://uaf.edu/"><img class="uaflogo" alt="UAF logo" src="img/uaflogoBlue.png"></a>
<a class="text-white" style="font-weight: bold; margin-top: auto; margin-bottom: 10px;" href="https://uaf.edu">UNIVERSITY OF ALASKA FAIRBANKS</a>
</div>
</div>
</div>
<div class="row" style="background: #007682; height: 8px;"></div>
<div class="row">
<div id="banner-logo" class="col-sm-12">
<div id="banner-title">
<div class="cfostitle">
<!-- <a href="https://www.sikuliaq.alaska.edu/"><i>R/V Sikuliaq</i></a> -->
<a href="https://www.sikuliaq.alaska.edu/" title="R/V Sikuliaq"><img alt="R/V Sikuliaq" src="img/SKQShipLogo-White.png"> <span style="font-weight: bold; font-style: italic; margin-top: auto; margin-bottom: auto;"></span></a> R/V <i>Sikuliaq</i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="navbar navbar-expand-lg navbar-{% if config.theme.nav_style == "light" %}light{% else %}dark{% endif %} bg-{{ config.theme.nav_style }}" style="top: -70px;">
<div class="container">
{%- block site_name %}
<a class="navbar-brand" href="{{ nav.homepage.url|url }}">{{ config.site_name }}</a>
{%- endblock %}
{%- if nav|length>1 or (page and (page.next_page or page.previous_page)) or config.repo_url %}
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbar-collapse">
<span class="navbar-toggler-icon"></span>
</button>
{%- endif %}
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
{%- block site_nav %}
{%- if nav|length>1 %}
<!-- Main navigation -->
<ul class="nav navbar-nav">
{%- for nav_item in nav %}
{%- if nav_item.children %}
<li class="dropdown{% if nav_item.active %} active{% endif %}">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">{{ nav_item.title }} <b class="caret"></b></a>
<ul class="dropdown-menu">
{%- for nav_item in nav_item.children %}
{% include "nav-sub.html" %}
{%- endfor %}
</ul>
</li>
{%- else %}
<li class="navitem{% if nav_item.active %} active{% endif %}">
<a href="{{ nav_item.url|url }}" class="nav-link">{{ nav_item.title }}</a>
</li>
{%- endif %}
{%- endfor %}
</ul>
{%- endif %}
{%- endblock %}
<ul class="nav navbar-nav ml-auto">
{%- block search_button %}
{%- if 'search' in config['plugins'] %}
<li class="nav-item">
<a href="#" class="nav-link" data-toggle="modal" data-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
{%- endif %}
{%- endblock %}
{%- block next_prev %}
{%- if page and (page.next_page or page.previous_page) %}
<li class="nav-item">
<a rel="prev" {% if page.previous_page %}href="{{ page.previous_page.url|url }}" class="nav-link"{% else %}class="nav-link disabled"{% endif %}>
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li class="nav-item">
<a rel="next" {% if page.next_page %}href="{{ page.next_page.url|url }}" class="nav-link"{% else %}class="nav-link disabled"{% endif %}>
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
{%- endif %}
{%- endblock %}
{%- block repo %}
{%- if page and page.edit_url %}
<li class="nav-item">
<a href="{{ page.edit_url }}" class="nav-link">
{%- if config.repo_name == 'GitHub' -%}
<i class="fa fa-github"></i> Edit on {{ config.repo_name }}
{%- elif config.repo_name == 'Bitbucket' -%}
<i class="fa fa-bitbucket"></i> Edit on {{ config.repo_name }}
{%- elif config.repo_name == 'GitLab' -%}
<i class="fa fa-gitlab"></i> Edit on {{ config.repo_name }}
{%- else -%}
Edit on {{ config.repo_name }}
{%- endif -%}
</a>
</li>
{%- elif config.repo_url %}
<li class="nav-item">
<a href="{{ config.repo_url }}" class="nav-link">
{%- if config.repo_name == 'GitHub' -%}
<i class="fa fa-github"></i> {{ config.repo_name }}
{%- elif config.repo_name == 'Bitbucket' -%}
<i class="fa fa-bitbucket"></i> {{ config.repo_name }}
{%- elif config.repo_name == 'GitLab' -%}
<i class="fa fa-gitlab"></i> {{ config.repo_name }}
{%- else -%}
{{ config.repo_name }}
{%- endif -%}
</a>
</li>
{%- endif %}
{%- endblock %}
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
{%- block content %}
<!-- <div class="col-md-3">{% include "toc.html" %}</div> -->
<div class="col-md-12" role="main" style="top: -50px;">{% include "content.html" %}</div>
{%- endblock %}
</div>
</div>
<!-- style="position: relative; top: -100px;" -->
<!-- <div class="alert alert-danger" role="alert">
<p><span class="fas fa-exclamation-circle"></span>
This website is an incomplete and active work in progress. Please send feedback to <a href="mailto:jehaverlack@alaska.edu">jehaverlack@alaska.edu</a>
</p>
</div> -->
<footer class="col-md-12 footer" >
{%- block footer %}
<p class="small">The University of Alaska Fairbanks is <a target="_blank" href="https://uaf.edu/accreditation/">accredited</a> by the Northwest Commission on Colleges and Universities.<br>UAF is an AA/EO employer and educational institution and prohibits illegal discrimination against any individual. Learn more about UA's <a target="_blank" href="https://www.alaska.edu/nondiscrimination" >notice of nondiscrimination</a>.<br>UA is committed to providing accessible websites. Learn more about UA's <a target="_blank" href="https://www.alaska.edu/webaccessibility" >notice of web accessibility</a>.<br><a target="_blank" href="https://www.alaska.edu/records/compliance/gdpr/ua-privacy-statement/index.xml" >Privacy Statement</a></p>
{%- if config.copyright %}
<p class="small">{{ config.copyright }}</p>
{%- endif %}
<p class="small">For questions or comments regarding this page, contact <a href="mailto:uaf-skq-science-support@alaska.edu">uaf-skq-science-support@alaska.edu</a></p>
{%- if config.extra.version %}
<p class="small">Version: {{ config.extra.version }}</p>
{%- endif %}
<p class="small">Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
{%- endblock %}
</footer>
<div class="row" style="margin-right: 20px;">
<div class="col-sm-12" style="text-align: right; valign: middle;">
<a target="_blank" href="https://www.uaf.edu/"><img alt="University of Alaska Fairbanks" title="University of Alaska Fairbanks" style="max-height: 50px;" src="img/UAF.png"></a>
<a target="_blank" href="https://www.uaf.edu/cfos/"><img alt="UAF College of Fisheries and Ocean Sciences" title="UAF College of Fisheries and Ocean Sciences" style="max-height: 50px;" src="img/SMALL-CFOS.jpg"></a>
<a target="_blank" href="https://www.sikuliaq.alaska.edu/"><img alt="R/V Sikuliaq" title="R/V Sikuliaq" style="max-height: 50px;" src="img/sikuliaqlogo.png"></a>
<a target="_blank" href="https://www.unols.org/"><img alt="University-National Laboratory System" title="University-National Laboratory System" style="max-height: 50px;" src="img/unols-logo.png"></a>
<a target="_blank" href="https://www.nsf.gov/"><img alt="National Science Foundation" title="National Science Foundation" style="max-height: 65px;" src="img/NSF.png"></a>
</div>
</div>
{%- block scripts %}
<script>
var base_url = {{ base_url | tojson }},
shortcuts = {{ config.theme.shortcuts | tojson }};
</script>
<script src="{{ 'js/base.js'|url }}" defer></script>
{%- for path in config['extra_javascript'] %}
<script src="{{ path|url }}" defer></script>
{%- endfor %}
{%- endblock %}
{% if 'search' in config['plugins'] %}{%- include "search-modal.html" %}{% endif %}
{%- include "keyboard-modal.html" %}
</body>
</html>
{% if page and page.is_homepage %}
<!--
MkDocs version : {{ mkdocs_version }}
Build Date UTC : {{ build_date_utc }}
-->
{% endif %}

44
web/root/custom/content.html.disabled

@ -0,0 +1,44 @@
{% if page and page.meta.source %}
<div class="source-links">
{% for filename in page.meta.source %}
<span class="label label-primary">{{ filename }}</span>
{% endfor %}
</div>
{% endif %}
{% if page and not page.meta.no_breadcrumb %}
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
{% for doc in page.ancestors|reverse %}
{% if doc.link %}
<li class="breadcrumb-item"><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
{% else %}
<li class="breadcrumb-item">{{ doc.title }}</li>
{% endif %}
{% endfor %}
{% if page %}<li class="breadcrumb-item active" aria-current="page">{{ page.title }}</li>{% endif %}
</ol>
</nav>
{% endif %}
{{ page.content }}
<!-- <ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr">
<li class="last-updated-holder displayDate loading">
<span class="last-updated-text">Last updated:</span>
<time role="presentation" datetime="2018-10-25T00:00:00.000Z" data-article-date-source="ms.date">{% if last_commit %}{{ last_commit.commit.committer.date.strftime('%Y-%m-%d') }}{% endif %}</time>
</li> -->
<!--
<li class="readingTime">
2 minutes to read
</li>
-->
<!-- <li class="contributors-holder">
<span class="contributors-text">Contributors</span>
<ul class="contributors" data-bi-name="contributors">
{%- for user in committers -%}
<li><a href="{{ user.repos }}" title="{{ user.name }}" data-bi-name="contributorprofile"><img src="../img/contributor.svg" data-src="{{ user.avatar }}?size=32" alt="{{ user.name }}"></a></li>
{%- endfor -%}
</ul>
</li>
</ul> -->

4335
web/root/custom/css/all.css
File diff suppressed because it is too large
View File

5
web/root/custom/css/all.min.css
File diff suppressed because it is too large
View File

324
web/root/custom/css/base.css

@ -0,0 +1,324 @@
body {
padding-top: 70px;
}
/* Replacement for `body { background-attachment: fixed; }`, which has
performance issues when scrolling on large displays. See #1394. */
body::before {
content: ' ';
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
background-color: #f8f8f8;
background: url(../img/grid.png) repeat-x;
will-change: transform;
z-index: -1;
}
body > .container {
min-height: 400px;
}
ul.nav .main {
font-weight: bold;
}
.col-md-3 {
padding-left: 0;
z-index: 1;
}
.col-md-9 {
padding-bottom: 100px;
}
.source-links {
float: right;
}
.col-md-9 img {
max-width: 100%;
display: inline-block;
padding: 4px;
line-height: 1.428571429;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
margin: 20px auto 30px auto;
}
/*
* The code below adds some padding to the top of the current anchor target so
* that, when navigating to it, the header isn't hidden by the navbar at the
* top.
*/
:target::before {
content: "";
display: block;
margin-top: -75px;
height: 75px;
pointer-events: none;
}
h1 {
color: #444;
font-weight: 400;
font-size: 42px;
}
h2, h3, h4, h5, h6 {
color: #444;
font-weight: 300;
}
hr {
border-top: 1px solid #aaa;
}
pre, .rst-content tt {
max-width: 100%;
background: #fff;
border: solid 1px #e1e4e5;
color: #333;
overflow-x: auto;
}
code.code-large, .rst-content tt.code-large {
font-size: 90%;
}
code {
padding: 2px 5px;
background: #fff;
border: solid 1px #e1e4e5;
color: #333;
white-space: pre-wrap;
word-wrap: break-word;
}
pre code {
background: transparent;
border: none;
white-space: pre;
word-wrap: normal;
font-family: monospace,serif;
font-size: 12px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #fff;
background-color: #333;
border-radius: 3px;
-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
}
a code {
color: #2FA4E7;
}
a:hover code, a:focus code {
color: #157AB5;
}
footer {
margin-top: 30px;
margin-bottom: 10px;
text-align: center;
font-weight: 200;
}
.modal-dialog {
margin-top: 60px;
}
/*
* Side navigation
*
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
* sections of docs content.
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar.affix { /* csslint allow: adjoining-classes */
position: static;
}
.bs-sidebar.well { /* csslint allow: adjoining-classes */
padding: 0;
max-height: 90%;
overflow-y: auto;
}
/* First level of nav */
.bs-sidenav {
padding-top: 10px;
padding-bottom: 10px;
border-radius: 5px;
}
/* All levels of nav */
.bs-sidebar .nav > li > a {
display: block;
padding: 5px 20px;
z-index: 1;
}
.bs-sidebar .nav > li > a:hover,
.bs-sidebar .nav > li > a:focus {
text-decoration: none;
border-right: 1px solid;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
font-weight: bold;
background-color: transparent;
border-right: 1px solid;
}
/* Nav: second level (shown on .active) */
.bs-sidebar .nav .nav {
display: none; /* Hide by default, but at >768px, show it */
margin-bottom: 8px;
}
.bs-sidebar .nav .nav > li > a {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 30px;
font-size: 90%;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
/* Workaround a Safari bug when zooming to < 100%
https://github.com/mkdocs/mkdocs/issues/1050 */
.col-md-9 {
box-sizing: border-box; /* csslint allow: box-sizing */
padding-left: 25%;
width: 100%;
}
.bs-sidebar .nav > .active > ul {
display: block;
}
/* Widen the fixed sidebar */
.bs-sidebar.affix, /* csslint allow: adjoining-classes */
.bs-sidebar.affix-bottom { /* csslint allow: adjoining-classes */
width: 213px;
}
.bs-sidebar.affix { /* csslint allow: adjoining-classes */
position: fixed; /* Undo the static from mobile first approach */
top: 80px;
}
.bs-sidebar.affix-bottom { /* csslint allow: adjoining-classes */
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidebar.affix-bottom .bs-sidenav, /* csslint allow: adjoining-classes */
.bs-sidebar.affix .bs-sidenav { /* csslint allow: adjoining-classes */
margin-top: 0;
margin-bottom: 0;
}
}
@media (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar.affix-bottom, /* csslint allow: adjoining-classes */
.bs-sidebar.affix { /* csslint allow: adjoining-classes */
width: 263px;
}
}
.headerlink {
font-family: FontAwesome;
font-size: 14px;
display: none;
padding-left: .5em;
}
h1:hover .headerlink, h2:hover .headerlink, h3:hover .headerlink, h4:hover .headerlink, h5:hover .headerlink, h6:hover .headerlink{
display:inline-block;
}
.admonition {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
text-align: left;
}
.admonition.note { /* csslint allow: adjoining-classes */
color: #3a87ad;
background-color: #d9edf7;
border-color: #bce8f1;
}
.admonition.warning { /* csslint allow: adjoining-classes */
color: #c09853;
background-color: #fcf8e3;
border-color: #fbeed5;
}
.admonition.danger { /* csslint allow: adjoining-classes */
color: #b94a48;
background-color: #f2dede;
border-color: #eed3d7;
}
.admonition-title {
font-weight: bold;
text-align: left;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu>.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
-webkit-border-radius: 0 6px 6px 6px;
-moz-border-radius: 0 6px 6px;
border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
display: block;
}
.dropdown-submenu>a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: #ccc;
margin-top: 5px;
margin-right: -10px;
}
.dropdown-submenu:hover>a:after {
border-left-color: #fff;
}
.dropdown-submenu.pull-left { /* csslint allow: adjoining-classes */
float: none;
}
.dropdown-submenu.pull-left>.dropdown-menu { /* csslint allow: adjoining-classes */
left: -100%;
margin-left: 10px;
-webkit-border-radius: 6px 0 6px 6px;
-moz-border-radius: 6px 0 6px 6px;
border-radius: 6px 0 6px 6px;
}

14
web/root/custom/css/brands.css

@ -0,0 +1,14 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;
font-display: auto;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands'; }

5
web/root/custom/css/brands.min.css

@ -0,0 +1,5 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}

413
web/root/custom/css/cfos-theme.css

@ -0,0 +1,413 @@
@CHARSET "UTF-8";
body {
overflow-x: hidden;
margin:0px 0px 0px 0px;
font-family: Arial,Helvetica,sans-serif;
/* font-size: 0.75rem; */
/* color: #1e5c8d; */
background-color: #ffffff;
}
/* Banner */
#banner {
background-color: #1e5c8d;
color: #ffffff;
/* margin-top: 46px; */
/* margin-left: -15px; */
/* margin-right: -15px; */
}
#banner a {
color: #ffffff;
text-decoration:none;
}
/* UAF Banner Bar */
#banner-bar {
background-color: #1e5c8d;
color: #ffffff;
margin-top: 0px;
font-size: 1.4em;
//border: 1px solid #000099;
}
#banner-bar a {
color: #ffffff;
}
#banner-logo-img {
max-height: 150px;
}
#banner-logo-img-uafpng {
max-height: 30px;
//border: 1px solid #060;
}
#banner-logo-img-uaftxt {
position: relative;
max-height: 20px;
left: 10px;
//border: 1px solid #060;
}
#banner-search {
float: right;
top: 3px;
max-width: 280px;
//border: 1px solid #006;
}
#uasearch {
background-color: #1b4376;
color: #ddd;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
min-height: 35px;
border: 0px;
padding: 0px;
float: right;
}
#uasubmit {
background-color: #1b4376;
color: #ddd;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
min-height: 35px;
border: 0px;
float: right;
}
/* CFOS Banner Logo */
#banner-logo {
//postion: relative;
//padding: 2rem;
text-align: center;
//top: 5px;
background: #003764;
/* background: #1e5c8d url("../img/uaf/naturally-inspiring-theme/bgHeader.jpg") no-repeat scroll 0 0 / cover; */
}
#banner-logo img {
margin: auto;
//width: 20%;
max-height: 60px;
text-align: center;
//border: 1px solid #990000;
}
#banner-logo div {
color: #ffffff;
font-weight: 200;
padding: 0.2rem 0;
//border: 1px solid #009900;
}
#banner-logo .cfostitle {
/* font-size: 1.2em; */
font-weight: bold;
text-align: left;
padding-top: 2px;
padding-bottom: 2px;
//border: 1px solid #990000;
}
#banner-logo .uaftitle {
font-size: 1rem;
text-align: center;
padding-top: 2px;
padding-bottom: 2px;
border-top: 1px solid;
width: 40%;
margin: auto;
//border: 1px solid #990000;
}
/*
#banner-logo a, .cfosLogo a:link, .cfosLogo a:visited {
color: white;
text-decoration: none;
}
#banner-logo a:hover {
opacity: 0.8;
}
*/
#banner-title {
font-weight: bold;
}
#banner-content {
color: #095F94;
font-weight: bold;
position: relative;
background: #1e5c8d url("../img/uaf/naturally-inspiring-theme/texture-bar.jpg") no-repeat scroll 0 0 / cover;
//float: right;
font-size: 1.5em;
//margin-left: inherit;
padding: 5px;
margin-top: 0px;
margin-left: 15px;
width: 100%;
//border: 1px solid #990000;
}
#breadcrumbs {
background: #1e5c8d url("../img/uaf/naturally-inspiring-theme/texture-bar.jpg") no-repeat scroll 0 0 / cover;
}
#progbar {
margin-bottom: 10px;
}
/* Main Content Area */
#main {
margin-left: -70px;
margin-right: -70px;
}
/* Footer */
.footer {
background-color: #095F94;
color: #fff;
}
.footer a {
color: #fff;
text-decoration: underline;
}
#footer {
// background-color: #fff;
min-height: 20px;
margin-top: 20px;
font-size: .9em;
}
#footer-copy {
float: right;
}
.uaflogo {
width: 80px;
/* margin-top: 15px;
float: right;
text-align: right; */
//border: 1px solid #990000;
}
.cfoslogo {
height: 80px;
width: 80px;
text-align: right;
float: right;
//border: 1px solid #990000;
}
/* Based on Bootstrap Responsive Screen Sizes: http://getbootstrap.com/css/#grid */
/* Extra small devices Phones (<768px) */
@media screen and (max-width: 767px) {
/* #banner {
margin-top: 33px;
} */
#banner-bar { font-size: 1rem; }
.uaflogo { width: 60px; }
#banner-logo-img {
max-height: 85px;
}
#banner-logo-img-uafpng {
max-height: 20px;
}
#banner-logo-img-uaftxt {
max-height: 12px;
}
#uasearch {
min-height: 25px;
font-size: .5rem;
}
#uasubmit {
min-height: 25px;
font-size: .5rem;
}
/*
#banner-title {
font-size: .8em;
font-weight: bold;
//margin-left: 100px;
//margin-top: 0px;
}
*/
#banner-logo img {
max-height: 40px;
}
#banner-logo div {
font-size: 1 em;
}
#banner-logo .cfostitle {
font-size: 0.9 em;
}
#banner-logo .uaftitle {
font-size: 0.6rem;
width: 60%;
}
#banner-content {
position: relative;
float: right;
//margin-top: 65px;
margin-bottom: 0px;
font-size: 1em;
}
#main {
margin-left: 0px;
margin-right: 0px;
}
#footer {
font-size: 0.7em;
}
}
/* Small devices Tablets (≥768px) */
@media screen and (min-width: 768px) and (max-width: 991px) {
/* #banner {
margin-top: 33px;
} */
#banner-bar { font-size: 1rem; }
.uaflogo { width: 60px; }
#banner-logo-img {
max-height: 100px;
}
#banner-logo-img-uafpng {
max-height: 30px;
}
#banner-logo-img-uaftxt {
max-height: 20px;
}
#banner-title {
font-size: 2em;
font-weight: bold;
//margin-left: 80px;
//margin-top: 25px;
}
#banner-content {
position: relative;
float: right;
//margin-top: 90px;
margin-bottom: 0px;
font-size: 1.1em;
}
}
/* Medium devices Desktops (≥992px) */
@media screen and (min-width: 992px) and (max-width: 1199px) {
/* #banner-bar { font-size: 1rem; } */
#banner-logo-img {
max-height: 130px;
}
#banner-logo-img-uafpng {
max-height: 30px;
}
#banner-logo-img-uaftxt {
max-height: 20px;
}
#banner-title {
font-size: 2.5em;
font-weight: bold;
//margin-left: 150px;
//margin-top: 40px;
}
#banner-content {
position: relative;
float: right;
//margin-top: 100px;
margin-bottom: 0px;
font-size: 1.5em;
}
#main {
margin-left: 0px;
margin-right: 0px;
}
}
/* Large devices Desktops (≥1200px) */
@media screen and (min-width: 1200px) {
/* #banner-bar { font-size: 1rem; } */
#banner-logo-img {
max-height: 150px;
}
#banner-logo-img-uafpng {
max-height: 30px;
}
#banner-logo-img-uaftxt {
max-height: 20px;
}
#banner-title {
font-size: 3em;
font-weight: bold;
//margin-left: 150px;
//margin-top: 20px;
}
#banner-content {
position: relative;
float: right;
//margin-top: 115px;
margin-bottom: 0px;
font-size: 1.9em;
}
#main {
margin-left: 0px;
margin-right: 0px;
}
}

99
web/root/custom/css/cfos.css

@ -0,0 +1,99 @@
body {
/* margin:0px 0px 0px 0px; */
font-family: Raleway,HelveticaNeue,"Helvetica Neue",Helvetica,Arial,sans-serif;
font-weight: normal;
/* font-size: 14px;
color: #222;
background-color: #ffffff;
overflow-x: hidden; */
}
h1, h2, h3, h4, h5, h6 {
font-family: Raleway,HelveticaNeue,"Helvetica Neue",Helvetica,Arial,sans-serif;
/* color: #ddd; */
}
/* a {
color: #003764;
text-decoration: none;
} */
blockquote p {
font-size: 1.2rem;
}
/* hr {
border-top: 1px solid #000;
} */
/* background: #003764 url("../img/uaf/naturally-inspiring-theme/bgHeader.jpg") no-repeat scroll 0 0 / cover; */
.navbar {
background-image: -webkit-linear-gradient(#003764,#003764 60%,#003764);
background-image: linear-gradient(#003764,#003764 60%,#003764);
background-repeat: no-repeat;
border-bottom: 1px solid #003764;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#003764',endColorstr='#003764',GradientType=0);
filter: none;
-webkit-box-shadow: 0 1px 10px rgba(0,0,0,0.1);
box-shadow: 0 1px 10px rgba(0,0,0,0.1);
}
.navbar-default {
background-color: #003764;
border-color: #003764;
}
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus {
color: #fff;
background-color: #003764;
}
.navbar-default .navbar-nav>.open>a, .navbar-default .navbar-nav>.open>a:hover, .navbar-default .navbar-nav>.open>a:focus {
color: #fff;
background-color: #003764;
}
/* .navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus {
color: #fff;
background-color: #003764;
} */
.nav .open>a, .nav .open>a:hover, .nav .open>a:focus {
background-color: #eee;
border-color: #003764;
}
.dropdown>.active>a, .dropdown>.active>a:hover, .dropdown>.active>a:focus {
color: #fff;
background-color: #003764;
}
.dropdown-menu>.active>a, .dropdown-menu>.active>a:hover, .dropdown-menu>.active>a:focus {
color: #fff;
background-color: #003764;
}
.dropdown-toggle>.active>a, .dropdown-toggle>.active>a:hover, .dropdown-toggle>.active>a:focus {
color: #fff;
background-color: #003764;
}
/* -------------------------------- */
/* .dropdown>a, .dropdown>a:hover, .dropdown>a:focus {
color: #fff;
background-color: #003764;
}
.dropdown-menu>a, .dropdown-menu>a:hover, .dropdown-menu>a:focus {
color: #fff;
background-color: #003764;
}
.dropdown-toggle>.active>a, .dropdown-toggle>.active>a:hover, .dropdown-toggle>.active>a:focus {
color: #fff;
background-color: #003764;
} */
/* a, a:hover, a:focus {
color: #fff;
background-color: #003764;
} */

119
web/root/custom/css/cfosgroups.css

@ -0,0 +1,119 @@
.col-sm-2 {
width: 158px;
}
.col-sm-4 {
width: 326px;
}
.col-sm-8 {
width: 662px;
/* width: 632px; */
}
.cfosgroup {
font-size: .75em;
margin: 5px;
border-radius: 8px;
min-height: 70px;
/* min-width: : 200px; */
padding: 5px;
text-align: center;
}
.basegroup a {
color: #00f;
}
.emptygroup {
color: #000;
background-color: #fff;
filter:alpha(opacity=0);
opacity:0;
/* border: 3px solid #000; */
/* margin: 5px;
min-height: 70px; */
/* min-width: : 200px; */
/* padding: 5px;
text-align: center; */
}
.basegroup a {
color: #00f;
}
.basegroup {
color: #000;
background-color: #fff;
border: 3px solid #00d;
/* margin: 5px;
border-radius: 8px;
min-height: 70px;
min-width: : 200px;
padding: 5px;
text-align: center; */
}
.distgroup a {
color: #0b0;
}
.distgroup {
color: #000;
background-color: #fff;
border: 3px solid #090;
/* margin: 5px;
border-radius: 8px;
min-height: 70px;
min-width: : 200px;
padding: 5px;
text-align: center; */
}
.topgroup a {
color: #2fa4e7;
}
.topgroup {
color: #000;
background-color: #fff;
border: 3px solid #2fa4e7;
/* width: 660px; */
/* margin: 5px;
border-radius: 8px;
min-height: 70px;
min-width: : 200px;
padding: 5px;
text-align: center; */
}
.byrolegroup a {
color: #2fa4e7;
}
.byrolegroup {
color: #000;
background-color: #fff;
border: 3px solid #2fa4e7;
/* margin: 5px;
border-radius: 8px;
min-height: 70px;
min-width: : 200px;
padding: 5px;
text-align: center; */
}
.bylocgroup a {
color: #5e8a2f;
}
.bylocgroup {
color: #000;
background-color: #fff;
border: 3px solid #5e8a2f;
/* margin: 5px;
border-radius: 8px;
min-height: 70px;
min-width: : 200px;
padding: 5px;
text-align: center; */
}

4302
web/root/custom/css/fontawesome.css
File diff suppressed because it is too large
View File

5
web/root/custom/css/fontawesome.min.css
File diff suppressed because it is too large
View File

93
web/root/custom/css/jjsonviewer.css

@ -0,0 +1,93 @@
.jjson-container {
font-size: 13px;
line-height: 1.2;
font-family: monospace;
padding-left: 0;
margin-left: 20px;
overflow: auto;
}
.jjson-container,
.jjson-container ul{
list-style: none !important;
}
.jjson-container ul{
padding: 0px !important;
padding-left: 20px !important;
margin: 0px !important;
}
.jjson-container li {
position: relative;
}
.jjson-container > li > .key,
.jjson-container .array .key {
display: none;
}
.jjson-container .array .object .key {
display: inline;
}
.jjson-container li:after {
content: ",";
}
.jjson-container li:last-child:after {
content: "";
}
.jjson-container .null {
color: #999;
}
.jjson-container .string {
color: #4e9a06;
}
.jjson-container .number {
color: #a40000;
}
.jjson-container .boolean {
color: #c4a000;
}
.jjson-container .key {
color: #204a87;
}
.jjson-error {
margin: 10px;
color: rgb(239, 62, 62);
}
.jjson-container .expanded {
cursor: pointer;
}
.jjson-container .expanded:before {
content: "-";
font-size: 1.2em;
width: 13px;
text-align: center;
line-height: 13px;
font-family: sans-serif;
color: #933;
position: absolute;
left: -15px;
top: 3px;
}
.jjson-container .collapsed:before {
content: "+";
font-size: 1.1em;
color: #000;
top: 1px;
}
.jjson-container li .collapsed ~ .close:before {
content: "... ";
color: #999;
}
.jjson-container .hidden ~ ul {
display: none;
}
.jjson-container span {
position: static !important;
}

57
web/root/custom/css/jquery.json-viewer.css

@ -0,0 +1,57 @@
/* Root element */
.json-document {
padding: 1em 2em;
}
/* Syntax highlighting for JSON objects */
ul.json-dict, ol.json-array {
list-style-type: none;
margin: 0 0 0 1px;
border-left: 1px dotted #ccc;
padding-left: 2em;
}
.json-string {
color: #0B7500;
}
.json-literal {
color: #1A01CC;
font-weight: bold;
}
/* Toggle button */
a.json-toggle {
position: relative;
color: inherit;
text-decoration: none;
}
a.json-toggle:focus {
outline: none;
}
a.json-toggle:before {
font-size: 1.1em;
color: #c0c0c0;
content: "\25BC"; /* down arrow */
position: absolute;
display: inline-block;
width: 1em;
text-align: center;
line-height: 1em;
left: -1.2em;
}
a.json-toggle:hover:before {
color: #aaa;
}
a.json-toggle.collapsed:before {
/* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */
transform: rotate(-90deg);
}
/* Collapsable placeholder links */
a.json-placeholder {
color: #aaa;
padding: 0 1em;
text-decoration: none;
}
a.json-placeholder:hover {
text-decoration: underline;
}

15
web/root/custom/css/regular.css

@ -0,0 +1,15 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 400;
font-display: auto;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Free';
font-weight: 400; }

5
web/root/custom/css/regular.min.css

@ -0,0 +1,5 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}

62
web/root/custom/css/satnag-icons.css

@ -0,0 +1,62 @@
@font-face {
font-family: 'satnag-icons';
src: url('../fonts/satnag-icons.eot?6d0gd8');
src: url('../fonts/satnag-icons.eot?6d0gd8#iefix') format('embedded-opentype'),
url('../fonts/satnag-icons.ttf?6d0gd8') format('truetype'),
url('../fonts/satnag-icons.woff?6d0gd8') format('woff'),
url('../fonts/satnag-icons.svg?6d0gd8#satnag-icons') format('svg');
font-weight: normal;
font-style: normal;
}
[class^="satnag-"], [class*=" satnag-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'satnag-icons' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.satnag-oit:before {
content: "\e900";
}
.satnag-cfosfish:before {
content: "\e901";
}
.satnag-sikuliaq:before {
content: "\e902";
}
.satnag-uaf:before {
content: "\e903";
}
.satnag-uafnanook:before {
content: "\e904";
}
.satnag-satnag:before {
content: "\e905";
}
.satnag-nsf:before {
content: "\e906";
}
.satnag-uw:before {
content: "\e907";
}
.satnag-cfos:before {
content: "\e908";
}
.satnag-whoi:before {
content: "\e909";
}
.satnag-unols:before {
content: "\e90a";
}
.satnag-ucsd:before {
content: "\e90b";
}

16
web/root/custom/css/solid.css

@ -0,0 +1,16 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
font-display: auto;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Free';
font-weight: 900; }

5
web/root/custom/css/solid.min.css

@ -0,0 +1,5 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}

346
web/root/custom/css/svg-with-js.css

@ -0,0 +1,346 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }

5
web/root/custom/css/svg-with-js.min.css

@ -0,0 +1,5 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
.svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;transform:scale(.25);transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;transform:scale(.25);transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;transform:scale(.25);transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}

207
web/root/custom/css/uaf.css

@ -0,0 +1,207 @@
/* Body styles and fonts */
/* * {border-radius: 0 } */
body {font-family:'Lato', 'Trebuchet MS', Arial, sans-serif -webkit-font-smoothing: antialiased -moz-osx-font-smoothing: grayscale }
h1, h2, h3, h4, h5, h6 {font-weight: 700;}
section .site-header.container-fluid .container .row .d-flex .align-self-center .h1 {font-weight:bold;}
main a:link, main a:visited {color:#003764;}
main a:hover, main a:active {color:#001139;}
main p a:link, main p a:visited {color:#003764; text-decoration:underline;}
main p a:hover, main p a:active {color:#001139;}
main li a:link, main li a:visited {color:#003764; text-decoration:underline;}
main li a:hover, main li a:active {color:#001139;}
main table a:link, main table a:visited {color:#003764; text-decoration:underline;}
main table a:hover, main table a:active {color:#001139;}
main p.h5 a:link, main p.h5 a:visited {color:#003764; text-decoration:none;}
main p.h5 a:hover, main p.h5 a:active {color:#001139; text-decoration:underline;}
main #sidebar ul.subnav li a:link, main #sidebar ul.subnav li a:visited {text-decoration:none;}
main nav.breadcrumbs ol li a:link, main nav.breadcrumb ol li a:visited {text-decoration:none;}
/* .uafSearch button {font-size: 1.5rem;padding: 0.5rem;} */
button.navbar-toggler {margin:0.5rem;}
.btn {white-space:initial }
a.btn-primary:link, a.btn-primary:visited {background: #1e5c8d border: none color:#fff text-shadow:none; text-decoration:none;}
a.btn-primary:hover, a.btn-primary:active {background: #003764 border: none color:#fff text-shadow:none; text-decoration:none;}
a.btn-secondary:link, a.btn-secondary:visited {background: #ffcd00 border: none color:#000 text-decoration:none;}
a.btn-secondary:hover, a.btn-secondary:active {background: #c79d00 border: none color:#000 text-decoration:none;}
a.btn-outline-warning:link, a.btn-outline-warning:visited {background: #ffcd00 border: none color:#000 text-decoration:none;}
a.btn-outline-warning:hover, a.btn-outline-warning:active {background: #c79d00 border: none color:#000 text-decoration:none;}
nav.bg-primary.uafBanner {background: #1e5c8d }
.bg-primary {background: #1e5c8d }
nav.bg-dark {padding: 0.5rem 1rem 0 1rem;}
nav.bg-dark {background-color:#003764 border-top: 0.5rem #ffcd00 solid;}
.site-header {background-color:#003764; border-top: 0.5rem #ffcd00 solid;}
a.navbar-brand.text-primary {color:#1e5c8d }
button.btn-primary, .btn.btn-primary {background: #1e5c8d border: none color:#fff text-shadow:none; text-decoration:none;}
button.btn-primary, .btn.btn-primary:hover, button.btn-primary:active {background: #003764 text-decoration:none;}
.button-container {margin-bottom: 1rem;}
cite {font-size: small;}
footer hr {visibility:hidden;}
footer.page-footer a:link, footer.page-footer a:visited {color:#fff }
footer.page-footer a:hover, footer.page-footer a:active {color:#ffcd00 }
footer.page-footer div.global-footer.text-white {background-color:#1e5c8d; color:#fff }
footer.page-footer div.global-footer.text-white a:link, footer.page-footer div.global-footer.text-white a:visited {color:#fff }
footer.page-footer div.global-footer.text-white a:hover, footer.page-footer div.global-footer.text-white a:active {color:#ffcd00 }
/* UAF home header styles */
h1.uafLogoText, div.uafLogoText {display:none;}
.headerRight {width:100%;}
header .nav-link {padding: 0.25rem;}
.uafBanner.bg-primary {background: #1e5c8d }
.uafBanner.secondaryBanner h1.uafLogoText {font-size: initial;}
header.uaf.home .uafSearch button {font-size: 1rem;}
/* carousel custoimzations
.hero-md {overflow:hidden;}
.hero-lg .carousel-item, .hero-md .carousel-item {height:initial }
.hero-lg .carousel-item img, .hero-lg .carousel-item video {min-height:initial width: 100% }
.hero-md .carousel-item img, .hero-md .carousel-item video {min-height:initial width: 100% }
.carousel-item .container-fluid {padding-left:initial padding-right:initial }
.carousel-item > img {position: relative height: initial }
.carousel-item img, .carousel-item video {object-fit:initial width: initial }
.carousel-inner {position:initial width: initial overflow: initial }
.hero-lg .carousel-caption, .hero-md .carousel-caption {background:#000 color:#fff display:block padding: 1rem 2.5rem width:100% margin:0 position:relative left:0 right:0 bottom:0 }
.hero-lg .carousel-caption.text-left h2, .hero-lg .carousel-caption.text-left p, .hero-md .carousel-caption.text-left h2, .hero-md .carousel-caption.text-left p {float:initial }
.hero-lg .carousel-caption.text-right h2, .hero-lg .carousel-caption.text-right p, .hero-md .carousel-caption.text-right h2, .hero-md .carousel-caption.text-right p {float:initial }
.carousel-caption p a.btn {display:none } */
/* carousel custoimzations */
.hero-md .hero-lg {overflow:hidden;}
.carousel-item {height:initial }
.carousel-item img, .carousel-item video {min-height:initial object-fit:initial width: 100% }
.carousel-item > img {position: relative height: initial }
.carousel-item .container-fluid {padding-left:initial padding-right:initial }
.carousel-inner {position:initial width: initial overflow: initial }
/* .carousel-caption {background:#000 color:#fff display:block padding: 1rem 2.5rem width:100% margin:0 position:relative left:0 right:0 bottom:0 } */
.carousel-caption {background:#000 color:#fff display:block padding: 1rem 2.5rem 2rem 2.5rem width:100% margin:0 position:relative left:0 right:0 bottom:0 }
.carousel-caption.text-left .h2, .carousel-caption.text-left p {float:initial }
.carousel-caption.text-right .h2, .carousel-caption.text-right p {float:initial }
/* .carousel-caption p a.btn {display:none } */
.carousel-caption p a.btn {display:block; text-decoration:none }
/* site nav dropdown */
.menuPrimary {
background: #003764;
border-top: 1px solid #1e5c8d;
}
.menuPrimary .navbar-nav .active>.nav-link, .menuPrimary .navbar-nav .nav-link.active, .menuPrimary .navbar-nav .nav-link.show, .menuPrimary .navbar-nav .show>.nav-link {
color: #ffffff;
}
.menuPrimary .navbar-nav .nav-link, nav.bg-dark .navbar-nav .nav-link {
border-bottom: transparent solid 5px;
color: #ffffff;
}
.menuPrimary .navbar-nav .nav-link:hover, nav.bg-dark .navbar-nav .nav-link:hover {
border-bottom: #ffcd00 solid 5px;
}
.menuPrimary .navbar-nav .active>.nav-link, nav.bg-dark .navbar-nav .active>.nav-link, .menuPrimary .navbar-nav .nav-link.active, nav.bg-dark .navbar-nav .nav-link.active, .menuPrimary .navbar-nav .nav-link.show, nav.bg-dark .navbar-nav .nav-link.show, .menuPrimary .navbar-nav .show>.nav-link, nav.bg-dark .navbar-nav .show>.nav-link {
border-bottom: #ffcd00 solid 5px;
}
nav.bg-dark ul.navbar-nav {
display: flex;
justify-content: space-between;
}
/* Snippet styles */
.col-md {display:flex; flex-direction:column;}
.col-md.colorbox a {display:flex; flex:1;}
.card {flex:1;}
.colorboxes-container .colorbox:first-child .card {background-color: #1e5c8d }
.colorboxes-container .colorbox:nth-child(2) .card {background-color: #004978 }
.colorboxes-container .colorbox:nth-child(3) .card {background-color: #00335F }
.featured-bg-container, .featured-bg-container.full-width, .featured-bg-container.dark, .featured-bg-container.full-width.dark {background: #1e5c8d color: #fff }
.featured-bg-container.light, .featured-bg-container.full-width.light {background: #ddd color: #000 }
.featured-bg-container.dark a:link, .featured-bg-container.dark a:visited, .featured-bg-container.full-width.dark a:link, .featured-bg-container.full-width.dark a:visited {color:#fff text-decoration:underline;}
.featured-bg-container.dark a:hover, .featured-bg-container.dark a:active, .featured-bg-container.full-width.dark a:hover, .featured-bg-container.full-width.dark a:active {color:#ffcd00 text-decoration:underline;}
.featured-bg-container.light a:link, .featured-bg-container.light a:visited, .featured-bg-container.full-width.light a:link, .featured-bg-container.full-width.light a:visited {color:#000 text-decoration:underline;}
.featured-bg-container.light a:hover, .featured-bg-container.light a:active, .featured-bg-container.full-width.light a:hover, .featured-bg-container.full-width.light a:active {color:#036; text-decoration:underline;}
.featured-bg-container.dark a.btn-primary:link, .featured-bg-container.dark a.btn-primary:visited, .featured-bg-container.full-width.dark a.btn-primary:link, .featured-bg-container.full-width.dark a.btn-primary:visited {background-color: #004978 color:#fff text-decoration:none;}
.featured-bg-container.dark a.btn-primary:hover, .featured-bg-container.dark a.btn-primary:active, .featured-bg-container.full-width.dark a.btn-primary:hover, .featured-bg-container.full-width.dark a.btn-primary:active {background-color: #00335F text-decoration:none;}
.featured-bg-container.dark a.btn-secondary:link, .featured-bg-container.dark a.btn-secondary:visited, .featured-bg-container.full-width.dark a.btn-secondary:link, .featured-bg-container.full-width.dark a.btn-secondary:visited {color:#000 text-decoration:none;}
.featured-bg-container.dark a.btn-secondary:hover, .featured-bg-container.dark a.btn-secondary:active, .featured-bg-container.full-width.dark a.btn-secondary:hover, .featured-bg-container.full-width.dark a.btn-secondary:active {color:#000 text-decoration:none;}
.featured-bg-container.dark a.btn-outline-secondary:link, .featured-bg-container.dark a.btn-outline-secondary:visited, .featured-bg-container.full-width.dark a.btn-outline-secondary:link, .featured-bg-container.full-width.dark a.btn-outline-secondary:visited {text-decoration:none;}
.featured-bg-container.dark a.btn-outline-secondary:hover, .featured-bg-container.dark a.btn-outline-secondary:active, .featured-bg-container.full-width.dark a.btn-outline-secondary:hover, .featured-bg-container.full-width.dark a.btn-outline-secondary:active {text-decoration:none;}
.facts-container h3 a:link, .facts-container h3 a:visited, .facts-container h4 a:link, .facts-container h4 a:visited {color: #fff text-decoration:none;}
.facts-container h3 a:hover, .facts-container h3 a:active, .facts-container h4 a:hover, .facts-container h4 a:active {color: #ffcd00 text-decoration:underline }
.featured-bg-container .facts-container h3 a:link, .featured-bg-container .facts-container h3 a:visited, .featured-bg-container.full-width .facts-container h3 a:link, .featured-bg-container.full-width .facts-container h3 a:visited, .featured-bg-container.dark .facts-container h3 a:link, .featured-bg-container.dark .facts-container h3 a:visited, .featured-bg-container.full-width.dark .facts-container h3 a:link, .featured-bg-container.full-width.dark .facts-container h3 a:visited {color: #fff text-decoration:none;}
.featured-bg-container .facts-container h3 a:hover, .featured-bg-container .facts-container h3 a:active, .featured-bg-container.full-width .facts-container h3 a:hover, .featured-bg-container.full-width .facts-container h3 a:active, .featured-bg-container.dark .facts-container h3 a:hover, .featured-bg-container.dark .facts-container h3 a:active, .featured-bg-container.full-width.dark .facts-container h3 a:hover, .featured-bg-container.full-width.dark .facts-container h3 a:active {color: #ffcd00 text-decoration:underline }
.featured-bg-container .facts-container h4 a:link, .featured-bg-container .facts-container h4 a:visited, .featured-bg-container.full-width .facts-container h4 a:link, .featured-bg-container.full-width .facts-container h4 a:visited, .featured-bg-container.dark .facts-container h4 a:link, .featured-bg-container.dark .facts-container h4 a:visited, .featured-bg-container.full-width.dark .facts-container h4 a:link, .featured-bg-container.full-width.dark .facts-container h4 a:visited {color: #fff text-decoration:none;}
.featured-bg-container .facts-container h4 a:hover, .featured-bg-container .facts-container h4 a:active, .featured-bg-container.full-width .facts-container h4 a:hover, .featured-bg-container.full-width .facts-container h4 a:active, .featured-bg-container.dark .facts-container h4 a:hover, .featured-bg-container.dark .facts-container h4 a:active, .featured-bg-container.full-width.dark .facts-container h4 a:hover, .featured-bg-container.full-width.dark .facts-container h4 a:active {color: #ffcd00 text-decoration:underline }
.facts-container {background: #1e5c8d }
.facts-container .text-warning {color: #ffcd00 }
.facts-container img {width:120px;height: 120px;}
.facts-container a:link, .facts-container a:visited, .facts-container a:hover, .facts-container a:active {text-decoration:none }
.featured-bg-container .facts-container a:link.btn-outline-warning, .featured-bg-container .facts-container a:visited.btn-outline-warning, .featured-bg-container .facts-container a:hover.btn-outline-warning, .featured-bg-container .facts-container a:active.btn-outline-warning {color:#000 }
.featured-bg-container .facts-container.bg-primary, .featured-bg-container.full-width .facts-container.bg-primary {background:transparent }
.featured-bg-container.light .facts-container.bg-primary p.text-warning, .featured-bg-container.full-width.light .facts-container.bg-primary p.text-warning {color:#000 }
.featured-bg-container .card a:link, .featured-bg-container .card a:visited,
.featured-bg-container.full-width .card a:link, .featured-bg-container.full-width .card a:visited,
.featured-bg-container.dark .card a:link, .featured-bg-container.dark .card a:visited,
.featured-bg-container.full-width.dark .card a:link, .featured-bg-container.full-width.dark .card a:visited,
.featured-bg-container.light .card a:link, .featured-bg-container.light .card a:visited,
.featured-bg-container.full-width.light .card a:link, .featured-bg-container.full-width.light .card a:visited {color:#000 text-decoration:none }
.featured-bg-container .card a:hover, .featured-bg-container .card a:active,
.featured-bg-container.full-width .card a:hover, .featured-bg-container.full-width .card a:active,
.featured-bg-container.dark .card a:hover, .featured-bg-container.dark .card a:active,
.featured-bg-container.full-width.dark .card a:hover, .featured-bg-container.full-width.dark .card a:active,
.featured-bg-container.light .card a:hover, .featured-bg-container.light .card a:active,
.featured-bg-container.full-width.light .card a:hover, .featured-bg-container.full-width.light .card a:active {color:#003764 text-decoration:underline }
.newsImage, .newsImage img {max-width:6rem;}
/* RFI form styles */
.rfi input, .rfi select, .rfi textarea {display:block;width:100%;}
.rfi label.small {font-weight:normal;font-size:smaller;}
.rfi label.main {background-color:#eee;padding:5px;display:block;}
.rfi .required {color:red;font-weight:bold;}
.rfi-hidden {display: none;}
/* Misc styles */
.list-center {text-align:center; list-style-position:inside;}
/* break points
@media (min-width: 1230px) {
.hero-lg .carousel-caption, .hero-md .carousel-caption {background: rgba(0,0,0,0.8) position:absolute bottom:4rem top:initial width:30% }
.hero-lg .carousel-caption.text-left, .hero-md .carousel-caption.text-left {left:10rem right:initial }
.hero-lg .carousel-caption.text-right, .hero-md .carousel-caption.text-right {right:10rem left:initial }
.hero-lg .carousel-caption.text-left h2, .hero-lg .carousel-caption.text-left p, .hero-md .carousel-caption.text-left h2, .hero-md .carousel-caption.text-left p {width:initial }
.hero-lg .carousel-caption.text-right h2, .hero-lg .carousel-caption.text-right p, .hero-md .carousel-caption.text-right h2, .hero-md .carousel-caption.text-right p {width:initial }
} */
/* break points */
@media (min-width: 992px) {
.headerLeft, .headerRight {width:50%;}
h1.uafLogoText, div.uafLogoText {display:inline-block;}
header .nav-link {padding: 0.5rem 1rem;}
}
@media (min-width: 1230px) {
.hero-md {max-height:400px overflow:hidden }
.carousel-caption {-webkit-linear-gradient(top, rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.9) 100%) /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.9) 100%) /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#99000000',GradientType=0 ) /* IE6-9 */ ; position:absolute bottom:inherit top:5% width:33% }
.carousel-caption, .carousel-caption.text-left {left:10rem right:initial }
.carousel-caption.text-right {right:10rem left:initial }
.carousel-caption.text-left .h2, .carousel-caption.text-left p {width:initial }
.carousel-caption.text-right .h2, .carousel-caption.text-right p {width:initial }
.carousel-caption .h2 {font-size:3.25rem font-weight: 800 line-height:3rem; margin-bottom: 1rem;}
.carousel-caption p {font-size:1.5rem line-height:1.75rem;}
/* .carousel-caption p a.btn {display:block } */
main#content .carousel-caption {left: 0 right: 0 bottom: 0 top: auto width: 100% }
}

207
web/root/custom/css/uaf.important.css

@ -0,0 +1,207 @@
/* Body styles and fonts */
/* * {border-radius: 0 !important;} */
body {font-family:'Lato', 'Trebuchet MS', Arial, sans-serif !important; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale !important;}
h1, h2, h3, h4, h5, h6 {font-weight: 700;}
section .site-header.container-fluid .container .row .d-flex .align-self-center .h1 {font-weight:bold;}
main a:link, main a:visited {color:#003764;}
main a:hover, main a:active {color:#001139;}
main p a:link, main p a:visited {color:#003764; text-decoration:underline;}
main p a:hover, main p a:active {color:#001139;}
main li a:link, main li a:visited {color:#003764; text-decoration:underline;}
main li a:hover, main li a:active {color:#001139;}
main table a:link, main table a:visited {color:#003764; text-decoration:underline;}
main table a:hover, main table a:active {color:#001139;}
main p.h5 a:link, main p.h5 a:visited {color:#003764; text-decoration:none;}
main p.h5 a:hover, main p.h5 a:active {color:#001139; text-decoration:underline;}
main #sidebar ul.subnav li a:link, main #sidebar ul.subnav li a:visited {text-decoration:none;}
main nav.breadcrumbs ol li a:link, main nav.breadcrumb ol li a:visited {text-decoration:none;}
/* .uafSearch button {font-size: 1.5rem;padding: 0.5rem;} */
button.navbar-toggler {margin:0.5rem;}
.btn {white-space:initial !important;}
a.btn-primary:link, a.btn-primary:visited {background: #1e5c8d !important; border: none !important; color:#fff !important; text-shadow:none; text-decoration:none;}
a.btn-primary:hover, a.btn-primary:active {background: #003764 !important; border: none !important; color:#fff !important; text-shadow:none; text-decoration:none;}
a.btn-secondary:link, a.btn-secondary:visited {background: #ffcd00 !important; border: none !important; color:#000 !important; text-decoration:none;}
a.btn-secondary:hover, a.btn-secondary:active {background: #c79d00 !important; border: none !important; color:#000 !important; text-decoration:none;}
a.btn-outline-warning:link, a.btn-outline-warning:visited {background: #ffcd00 !important; border: none !important; color:#000 !important; text-decoration:none;}
a.btn-outline-warning:hover, a.btn-outline-warning:active {background: #c79d00 !important; border: none !important; color:#000 !important; text-decoration:none;}
nav.bg-primary.uafBanner {background: #1e5c8d !important;}
.bg-primary {background: #1e5c8d !important;}
nav.bg-dark {padding: 0.5rem 1rem 0 1rem;}
nav.bg-dark {background-color:#003764 !important; border-top: 0.5rem #ffcd00 solid;}
.site-header {background-color:#003764; border-top: 0.5rem #ffcd00 solid;}
a.navbar-brand.text-primary {color:#1e5c8d !important;}
button.btn-primary, .btn.btn-primary {background: #1e5c8d !important; border: none !important; color:#fff !important; text-shadow:none; text-decoration:none;}
button.btn-primary, .btn.btn-primary:hover, button.btn-primary:active {background: #003764 !important; text-decoration:none;}
.button-container {margin-bottom: 1rem;}
cite {font-size: small;}
footer hr {visibility:hidden;}
footer.page-footer a:link, footer.page-footer a:visited {color:#fff !important;}
footer.page-footer a:hover, footer.page-footer a:active {color:#ffcd00 !important;}
footer.page-footer div.global-footer.text-white {background-color:#1e5c8d; color:#fff !important;}
footer.page-footer div.global-footer.text-white a:link, footer.page-footer div.global-footer.text-white a:visited {color:#fff !important;}
footer.page-footer div.global-footer.text-white a:hover, footer.page-footer div.global-footer.text-white a:active {color:#ffcd00 !important;}
/* UAF home header styles */
h1.uafLogoText, div.uafLogoText {display:none;}
.headerRight {width:100%;}
header .nav-link {padding: 0.25rem;}
.uafBanner.bg-primary {background: #1e5c8d !important;}
.uafBanner.secondaryBanner h1.uafLogoText {font-size: initial;}
header.uaf.home .uafSearch button {font-size: 1rem;}
/* carousel custoimzations
.hero-md {overflow:hidden;}
.hero-lg .carousel-item, .hero-md .carousel-item {height:initial !important;}
.hero-lg .carousel-item img, .hero-lg .carousel-item video {min-height:initial !important; width: 100% !important;}
.hero-md .carousel-item img, .hero-md .carousel-item video {min-height:initial !important; width: 100% !important;}
.carousel-item .container-fluid {padding-left:initial !important; padding-right:initial !important;}
.carousel-item > img {position: relative !important; height: initial !important;}
.carousel-item img, .carousel-item video {object-fit:initial !important; width: initial !important;}
.carousel-inner {position:initial !important; width: initial !important; overflow: initial !important;}
.hero-lg .carousel-caption, .hero-md .carousel-caption {background:#000 !important; color:#fff !important; display:block !important; padding: 1rem 2.5rem !important; width:100% !important; margin:0 !important; position:relative !important; left:0 !important; right:0 !important; bottom:0 !important;}
.hero-lg .carousel-caption.text-left h2, .hero-lg .carousel-caption.text-left p, .hero-md .carousel-caption.text-left h2, .hero-md .carousel-caption.text-left p {float:initial !important;}
.hero-lg .carousel-caption.text-right h2, .hero-lg .carousel-caption.text-right p, .hero-md .carousel-caption.text-right h2, .hero-md .carousel-caption.text-right p {float:initial !important;}
.carousel-caption p a.btn {display:none !important;} */
/* carousel custoimzations */
.hero-md .hero-lg {overflow:hidden;}
.carousel-item {height:initial !important;}
.carousel-item img, .carousel-item video {min-height:initial !important; object-fit:initial !important; width: 100% !important;}
.carousel-item > img {position: relative !important; height: initial !important;}
.carousel-item .container-fluid {padding-left:initial !important; padding-right:initial !important;}
.carousel-inner {position:initial !important; width: initial !important; overflow: initial !important;}
/* .carousel-caption {background:#000 !important; color:#fff !important; display:block !important; padding: 1rem 2.5rem !important; width:100% !important; margin:0 !important; position:relative !important; left:0 !important; right:0 !important; bottom:0 !important;} */
.carousel-caption {background:#000 !important; color:#fff !important; display:block !important; padding: 1rem 2.5rem 2rem 2.5rem !important; width:100% !important; margin:0 !important; position:relative !important; left:0 !important; right:0 !important; bottom:0 !important;}
.carousel-caption.text-left .h2, .carousel-caption.text-left p {float:initial !important;}
.carousel-caption.text-right .h2, .carousel-caption.text-right p {float:initial !important;}
/* .carousel-caption p a.btn {display:none !important;} */
.carousel-caption p a.btn {display:block; text-decoration:none !important;}
/* site nav dropdown */
.menuPrimary {
background: #003764;
border-top: 1px solid #1e5c8d;
}
.menuPrimary .navbar-nav .active>.nav-link, .menuPrimary .navbar-nav .nav-link.active, .menuPrimary .navbar-nav .nav-link.show, .menuPrimary .navbar-nav .show>.nav-link {
color: #ffffff;
}
.menuPrimary .navbar-nav .nav-link, nav.bg-dark .navbar-nav .nav-link {
border-bottom: transparent solid 5px;
color: #ffffff;
}
.menuPrimary .navbar-nav .nav-link:hover, nav.bg-dark .navbar-nav .nav-link:hover {
border-bottom: #ffcd00 solid 5px;
}
.menuPrimary .navbar-nav .active>.nav-link, nav.bg-dark .navbar-nav .active>.nav-link, .menuPrimary .navbar-nav .nav-link.active, nav.bg-dark .navbar-nav .nav-link.active, .menuPrimary .navbar-nav .nav-link.show, nav.bg-dark .navbar-nav .nav-link.show, .menuPrimary .navbar-nav .show>.nav-link, nav.bg-dark .navbar-nav .show>.nav-link {
border-bottom: #ffcd00 solid 5px;
}
nav.bg-dark ul.navbar-nav {
display: flex;
justify-content: space-between;
}
/* Snippet styles */
.col-md {display:flex; flex-direction:column;}
.col-md.colorbox a {display:flex; flex:1;}
.card {flex:1;}
.colorboxes-container .colorbox:first-child .card {background-color: #1e5c8d !important;}
.colorboxes-container .colorbox:nth-child(2) .card {background-color: #004978 !important;}
.colorboxes-container .colorbox:nth-child(3) .card {background-color: #00335F !important;}
.featured-bg-container, .featured-bg-container.full-width, .featured-bg-container.dark, .featured-bg-container.full-width.dark {background: #1e5c8d !important; color: #fff !important;}
.featured-bg-container.light, .featured-bg-container.full-width.light {background: #ddd !important; color: #000 !important;}
.featured-bg-container.dark a:link, .featured-bg-container.dark a:visited, .featured-bg-container.full-width.dark a:link, .featured-bg-container.full-width.dark a:visited {color:#fff !important; text-decoration:underline;}
.featured-bg-container.dark a:hover, .featured-bg-container.dark a:active, .featured-bg-container.full-width.dark a:hover, .featured-bg-container.full-width.dark a:active {color:#ffcd00 !important; text-decoration:underline;}
.featured-bg-container.light a:link, .featured-bg-container.light a:visited, .featured-bg-container.full-width.light a:link, .featured-bg-container.full-width.light a:visited {color:#000 !important; text-decoration:underline;}
.featured-bg-container.light a:hover, .featured-bg-container.light a:active, .featured-bg-container.full-width.light a:hover, .featured-bg-container.full-width.light a:active {color:#036; text-decoration:underline;}
.featured-bg-container.dark a.btn-primary:link, .featured-bg-container.dark a.btn-primary:visited, .featured-bg-container.full-width.dark a.btn-primary:link, .featured-bg-container.full-width.dark a.btn-primary:visited {background-color: #004978 !important; color:#fff !important; text-decoration:none;}
.featured-bg-container.dark a.btn-primary:hover, .featured-bg-container.dark a.btn-primary:active, .featured-bg-container.full-width.dark a.btn-primary:hover, .featured-bg-container.full-width.dark a.btn-primary:active {background-color: #00335F !important; text-decoration:none;}
.featured-bg-container.dark a.btn-secondary:link, .featured-bg-container.dark a.btn-secondary:visited, .featured-bg-container.full-width.dark a.btn-secondary:link, .featured-bg-container.full-width.dark a.btn-secondary:visited {color:#000 !important; text-decoration:none;}
.featured-bg-container.dark a.btn-secondary:hover, .featured-bg-container.dark a.btn-secondary:active, .featured-bg-container.full-width.dark a.btn-secondary:hover, .featured-bg-container.full-width.dark a.btn-secondary:active {color:#000 !important; text-decoration:none;}
.featured-bg-container.dark a.btn-outline-secondary:link, .featured-bg-container.dark a.btn-outline-secondary:visited, .featured-bg-container.full-width.dark a.btn-outline-secondary:link, .featured-bg-container.full-width.dark a.btn-outline-secondary:visited {text-decoration:none;}
.featured-bg-container.dark a.btn-outline-secondary:hover, .featured-bg-container.dark a.btn-outline-secondary:active, .featured-bg-container.full-width.dark a.btn-outline-secondary:hover, .featured-bg-container.full-width.dark a.btn-outline-secondary:active {text-decoration:none;}
.facts-container h3 a:link, .facts-container h3 a:visited, .facts-container h4 a:link, .facts-container h4 a:visited {color: #fff !important; text-decoration:none;}
.facts-container h3 a:hover, .facts-container h3 a:active, .facts-container h4 a:hover, .facts-container h4 a:active {color: #ffcd00 !important; text-decoration:underline !important;}
.featured-bg-container .facts-container h3 a:link, .featured-bg-container .facts-container h3 a:visited, .featured-bg-container.full-width .facts-container h3 a:link, .featured-bg-container.full-width .facts-container h3 a:visited, .featured-bg-container.dark .facts-container h3 a:link, .featured-bg-container.dark .facts-container h3 a:visited, .featured-bg-container.full-width.dark .facts-container h3 a:link, .featured-bg-container.full-width.dark .facts-container h3 a:visited {color: #fff !important; text-decoration:none;}
.featured-bg-container .facts-container h3 a:hover, .featured-bg-container .facts-container h3 a:active, .featured-bg-container.full-width .facts-container h3 a:hover, .featured-bg-container.full-width .facts-container h3 a:active, .featured-bg-container.dark .facts-container h3 a:hover, .featured-bg-container.dark .facts-container h3 a:active, .featured-bg-container.full-width.dark .facts-container h3 a:hover, .featured-bg-container.full-width.dark .facts-container h3 a:active {color: #ffcd00 !important; text-decoration:underline !important;}
.featured-bg-container .facts-container h4 a:link, .featured-bg-container .facts-container h4 a:visited, .featured-bg-container.full-width .facts-container h4 a:link, .featured-bg-container.full-width .facts-container h4 a:visited, .featured-bg-container.dark .facts-container h4 a:link, .featured-bg-container.dark .facts-container h4 a:visited, .featured-bg-container.full-width.dark .facts-container h4 a:link, .featured-bg-container.full-width.dark .facts-container h4 a:visited {color: #fff !important; text-decoration:none;}
.featured-bg-container .facts-container h4 a:hover, .featured-bg-container .facts-container h4 a:active, .featured-bg-container.full-width .facts-container h4 a:hover, .featured-bg-container.full-width .facts-container h4 a:active, .featured-bg-container.dark .facts-container h4 a:hover, .featured-bg-container.dark .facts-container h4 a:active, .featured-bg-container.full-width.dark .facts-container h4 a:hover, .featured-bg-container.full-width.dark .facts-container h4 a:active {color: #ffcd00 !important; text-decoration:underline !important;}
.facts-container {background: #1e5c8d !important;}
.facts-container .text-warning {color: #ffcd00 !important;}
.facts-container img {width:120px;height: 120px;}
.facts-container a:link, .facts-container a:visited, .facts-container a:hover, .facts-container a:active {text-decoration:none !important;}
.featured-bg-container .facts-container a:link.btn-outline-warning, .featured-bg-container .facts-container a:visited.btn-outline-warning, .featured-bg-container .facts-container a:hover.btn-outline-warning, .featured-bg-container .facts-container a:active.btn-outline-warning {color:#000 !important;}
.featured-bg-container .facts-container.bg-primary, .featured-bg-container.full-width .facts-container.bg-primary {background:transparent !important;}
.featured-bg-container.light .facts-container.bg-primary p.text-warning, .featured-bg-container.full-width.light .facts-container.bg-primary p.text-warning {color:#000 !important;}
.featured-bg-container .card a:link, .featured-bg-container .card a:visited,
.featured-bg-container.full-width .card a:link, .featured-bg-container.full-width .card a:visited,
.featured-bg-container.dark .card a:link, .featured-bg-container.dark .card a:visited,
.featured-bg-container.full-width.dark .card a:link, .featured-bg-container.full-width.dark .card a:visited,
.featured-bg-container.light .card a:link, .featured-bg-container.light .card a:visited,
.featured-bg-container.full-width.light .card a:link, .featured-bg-container.full-width.light .card a:visited {color:#000 !important; text-decoration:none !important;}
.featured-bg-container .card a:hover, .featured-bg-container .card a:active,
.featured-bg-container.full-width .card a:hover, .featured-bg-container.full-width .card a:active,
.featured-bg-container.dark .card a:hover, .featured-bg-container.dark .card a:active,
.featured-bg-container.full-width.dark .card a:hover, .featured-bg-container.full-width.dark .card a:active,
.featured-bg-container.light .card a:hover, .featured-bg-container.light .card a:active,
.featured-bg-container.full-width.light .card a:hover, .featured-bg-container.full-width.light .card a:active {color:#003764 !important; text-decoration:underline !important;}
.newsImage, .newsImage img {max-width:6rem;}
/* RFI form styles */
.rfi input, .rfi select, .rfi textarea {display:block;width:100%;}
.rfi label.small {font-weight:normal;font-size:smaller;}
.rfi label.main {background-color:#eee;padding:5px;display:block;}
.rfi .required {color:red;font-weight:bold;}
.rfi-hidden {display: none;}
/* Misc styles */
.list-center {text-align:center; list-style-position:inside;}
/* break points
@media (min-width: 1230px) {
.hero-lg .carousel-caption, .hero-md .carousel-caption {background: rgba(0,0,0,0.8) !important; position:absolute !important; bottom:4rem !important; top:initial !important; width:30% !important; }
.hero-lg .carousel-caption.text-left, .hero-md .carousel-caption.text-left {left:10rem !important; right:initial !important;}
.hero-lg .carousel-caption.text-right, .hero-md .carousel-caption.text-right {right:10rem !important; left:initial !important;}
.hero-lg .carousel-caption.text-left h2, .hero-lg .carousel-caption.text-left p, .hero-md .carousel-caption.text-left h2, .hero-md .carousel-caption.text-left p {width:initial !important;}
.hero-lg .carousel-caption.text-right h2, .hero-lg .carousel-caption.text-right p, .hero-md .carousel-caption.text-right h2, .hero-md .carousel-caption.text-right p {width:initial !important;}
} */
/* break points */
@media (min-width: 992px) {
.headerLeft, .headerRight {width:50%;}
h1.uafLogoText, div.uafLogoText {display:inline-block;}
header .nav-link {padding: 0.5rem 1rem;}
}
@media (min-width: 1230px) {
.hero-md {max-height:400px !important; overflow:hidden !important;}
.carousel-caption {-webkit-linear-gradient(top, rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.9) 100%) !important; /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.9) 100%) !important; /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40000000', endColorstr='#99000000',GradientType=0 ) !important; /* IE6-9 */ ; position:absolute !important; bottom:inherit !important; top:5% !important; width:33% !important; }
.carousel-caption, .carousel-caption.text-left {left:10rem !important; right:initial !important;}
.carousel-caption.text-right {right:10rem !important; left:initial !important;}
.carousel-caption.text-left .h2, .carousel-caption.text-left p {width:initial !important;}
.carousel-caption.text-right .h2, .carousel-caption.text-right p {width:initial !important;}
.carousel-caption .h2 {font-size:3.25rem !important; font-weight: 800 !important; line-height:3rem; margin-bottom: 1rem;}
.carousel-caption p {font-size:1.5rem !important;line-height:1.75rem;}
/* .carousel-caption p a.btn {display:block !important;} */
main#content .carousel-caption {left: 0 !important; right: 0 !important; bottom: 0 !important; top: auto !important; width: 100% !important;}
}

2166
web/root/custom/css/v4-shims.css
File diff suppressed because it is too large
View File

5
web/root/custom/css/v4-shims.min.css
File diff suppressed because it is too large
View File

BIN
web/root/custom/fonts/satnag-icons.eot

22
web/root/custom/fonts/satnag-icons.svg
File diff suppressed because it is too large
View File

BIN
web/root/custom/fonts/satnag-icons.ttf

BIN
web/root/custom/fonts/satnag-icons.woff

BIN
web/root/custom/img/CFOS-850x850.png

After

Width: 850  |  Height: 850  |  Size: 97 KiB

BIN
web/root/custom/img/CFOS.png

After

Width: 60  |  Height: 60  |  Size: 4.8 KiB

BIN
web/root/custom/img/NSF.png

After

Width: 167  |  Height: 168  |  Size: 35 KiB

BIN
web/root/custom/img/SKQLogoWShip.png

After

Width: 1227  |  Height: 275  |  Size: 116 KiB

BIN
web/root/custom/img/SKQShipLogo-White.png

After

Width: 415  |  Height: 273  |  Size: 10 KiB

BIN
web/root/custom/img/SKQShipLogo.png

After

Width: 415  |  Height: 273  |  Size: 11 KiB

BIN
web/root/custom/img/SMALL-CFOS.jpg

After

Width: 164  |  Height: 164  |  Size: 40 KiB

BIN
web/root/custom/img/UAF-txt.png

After

Width: 650  |  Height: 41  |  Size: 5.9 KiB

BIN
web/root/custom/img/UAF.png

After

Width: 120  |  Height: 108  |  Size: 8.0 KiB

BIN
web/root/custom/img/UAFLogo_A.png

After

Width: 202  |  Height: 111  |  Size: 4.6 KiB

BIN
web/root/custom/img/UAFLogo_A_black.png

After

Width: 764  |  Height: 686  |  Size: 9.9 KiB

BIN
web/root/custom/img/UAFLogo_A_blue.png

After

Width: 764  |  Height: 686  |  Size: 9.9 KiB

BIN
web/root/custom/img/cfos-mkdocs-template.png

After

Width: 1274  |  Height: 1332  |  Size: 266 KiB

BIN
web/root/custom/img/cfosblack.png

After

Width: 850  |  Height: 850  |  Size: 126 KiB

BIN
web/root/custom/img/favicon.ico

BIN
web/root/custom/img/nsf-logo-black.png

After

Width: 2177  |  Height: 2179  |  Size: 236 KiB

BIN
web/root/custom/img/sikuliaqlogo.jpg

After

Width: 600  |  Height: 480  |  Size: 63 KiB

BIN
web/root/custom/img/sikuliaqlogo.png

After

Width: 450  |  Height: 446  |  Size: 226 KiB

BIN
web/root/custom/img/skq-network-diagram.png

After

Width: 2112  |  Height: 1830  |  Size: 285 KiB

BIN
web/root/custom/img/uaf/GI_logo.png

After

Width: 1000  |  Height: 1000  |  Size: 20 KiB

BIN
web/root/custom/img/uaf/UAFLogo.png

After

Width: 330  |  Height: 326  |  Size: 5.8 KiB

BIN
web/root/custom/img/uaf/cfositLogo.gif

After

Width: 75  |  Height: 75  |  Size: 1.0 KiB

BIN
web/root/custom/img/uaf/naturally-inspiring-theme/bgHeader.jpg

After

Width: 1600  |  Height: 300  |  Size: 32 KiB

BIN
web/root/custom/img/uaf/naturally-inspiring-theme/texture-bar.jpg

After

Width: 1200  |  Height: 100  |  Size: 7.6 KiB

BIN
web/root/custom/img/uaf/naturally-inspiring-theme/uafLogo-header.png

After

Width: 400  |  Height: 208  |  Size: 12 KiB

BIN
web/root/custom/img/uaf/oitLogo.gif

After

Width: 300  |  Height: 460  |  Size: 18 KiB

BIN
web/root/custom/img/uaflogoBlue.png

After

Width: 229  |  Height: 116  |  Size: 9.3 KiB

BIN
web/root/custom/img/unols-logo.png

After

Width: 131  |  Height: 131  |  Size: 67 KiB

BIN
web/root/custom/img/unols-title-logo.png

After

Width: 217  |  Height: 67  |  Size: 73 KiB

1885
web/root/custom/js/CHANGES.md.incl
File diff suppressed because it is too large
View File

24
web/root/custom/js/LICENSE

@ -0,0 +1,24 @@
Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

19
web/root/custom/js/MathJax.js
File diff suppressed because it is too large
View File

188
web/root/custom/js/README.md.incl

@ -0,0 +1,188 @@
# Highlight.js
[![Build Status](https://travis-ci.org/highlightjs/highlight.js.svg?branch=master)](https://travis-ci.org/highlightjs/highlight.js) [![Greenkeeper badge](https://badges.greenkeeper.io/highlightjs/highlight.js.svg)](https://greenkeeper.io/)
Highlight.js is a syntax highlighter written in JavaScript. It works in
the browser as well as on the server. It works with pretty much any
markup, doesn’t depend on any framework, and has automatic language
detection.
## Getting Started
The bare minimum for using highlight.js on a web page is linking to the
library along with one of the styles and calling
[`initHighlightingOnLoad`][1]:
```html
<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
```
This will find and highlight code inside of `<pre><code>` tags; it tries
to detect the language automatically. If automatic detection doesn’t
work for you, you can specify the language in the `class` attribute:
```html
<pre><code class="html">...</code></pre>
```
The list of supported language classes is available in the [class
reference][2]. Classes can also be prefixed with either `language-` or
`lang-`.
To make arbitrary text look like code, but without highlighting, use the
`plaintext` class:
```html
<pre><code class="plaintext">...</code></pre>
```
To disable highlighting altogether use the `nohighlight` class:
```html
<pre><code class="nohighlight">...</code></pre>
```
## Custom Initialization
When you need a bit more control over the initialization of
highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4]
functions. This allows you to control *what* to highlight and *when*.
Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using
vanilla JS:
```js
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('pre code').forEach((block) => {
hljs.highlightBlock(block);
});
});
```
You can use any tags instead of `<pre><code>` to mark up your code. If
you don't use a container that preserves line breaks you will need to
configure highlight.js to use the `<br>` tag:
```js
hljs.configure({useBR: true});
document.querySelectorAll('div.code').forEach((block) => {
hljs.highlightBlock(block);
});
```
For other options refer to the documentation for [`configure`][4].
## Web Workers
You can run highlighting inside a web worker to avoid freezing the browser
window while dealing with very big chunks of code.
In your main script:
```js
addEventListener('load', () => {
const code = document.querySelector('#code');
const worker = new Worker('worker.js');
worker.onmessage = (event) => { code.innerHTML = event.data; }
worker.postMessage(code.textContent);
});
```
In worker.js:
```js
onmessage = (event) => {
importScripts('<path>/highlight.pack.js');
const result = self.hljs.highlightAuto(event.data);
postMessage(result.value);
};
```
## Getting the Library
You can get highlight.js as a hosted, or custom-build, browser script or
as a server module. Right out of the box the browser script supports
both AMD and CommonJS, so if you wish you can use RequireJS or
Browserify without having to build from source. The server module also
works perfectly fine with Browserify, but there is the option to use a
build specific to browsers rather than something meant for a server.
Head over to the [download page][5] for all the options.
**Don't link to GitHub directly.** The library is not supposed to work straight
from the source, it requires building. If none of the pre-packaged options
work for you refer to the [building documentation][6].
**The CDN-hosted package doesn't have all the languages.** Otherwise it'd be
too big. If you don't see the language you need in the ["Common" section][5],
it can be added manually:
```html
<script
charset="UTF-8"
src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/go.min.js"></script>
```
**On Almond.** You need to use the optimizer to give the module a name. For
example:
```bash
r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js
```
### CommonJS
You can import Highlight.js as a CommonJS-module:
```bash
npm install highlight.js --save
```
In your application:
```js
import hljs from 'highlight.js';
```
The default import imports all languages! Therefore it is likely to be more efficient to import only the library and the languages you need:
```js
import hljs from 'highlight.js/lib/highlight';
import javascript from 'highlight.js/lib/languages/javascript';
hljs.registerLanguage('javascript', javascript);
```
To set the syntax highlighting style, if your build tool processes CSS from your JavaScript entry point, you can import the stylesheet directly into your CommonJS-module:
```js
import hljs from 'highlight.js/lib/highlight';
import 'highlight.js/styles/github.css';
```
## License
Highlight.js is released under the BSD License. See [LICENSE][7] file
for details.
## Links
The official site for the library is at <https://highlightjs.org/>.
Further in-depth documentation for the API and other topics is at
<http://highlightjs.readthedocs.io/>.
Authors and contributors are listed in the [AUTHORS.en.txt][8] file.
[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload
[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html
[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block
[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options
[5]: https://highlightjs.org/download/
[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html
[7]: https://github.com/highlightjs/highlight.js/blob/master/LICENSE
[8]: https://github.com/highlightjs/highlight.js/blob/master/AUTHORS.en.txt

142
web/root/custom/js/README.ru.md.incl

@ -0,0 +1,142 @@
# Highlight.js
Highlight.js — это инструмент для подсветки синтаксиса, написанный на JavaScript. Он работает
и в браузере, и на сервере. Он работает с практически любой HTML разметкой, не
зависит от каких-либо фреймворков и умеет автоматически определять язык.
## Начало работы
Минимум, что нужно сделать для использования highlight.js на веб-странице — это
подключить библиотеку, CSS-стили и вызывать [`initHighlightingOnLoad`][1]:
```html
<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
```
Библиотека найдёт и раскрасит код внутри тегов `<pre><code>`, попытавшись
автоматически определить язык. Когда автоопределение не срабатывает, можно явно
указать язык в атрибуте class:
```html
<pre><code class="html">...</code></pre>
```
Список поддерживаемых классов языков доступен в [справочнике по классам][2].
Класс также можно предварить префиксами `language-` или `lang-`.
Чтобы отключить подсветку для какого-то блока, используйте класс `nohighlight`:
```html
<pre><code class="nohighlight">...</code></pre>
```
## Инициализация вручную
Чтобы иметь чуть больше контроля за инициализацией подсветки, вы можете
использовать функции [`highlightBlock`][3] и [`configure`][4]. Таким образом
можно управлять тем, *что* и *когда* подсвечивать.
Вот пример инициализации, эквивалентной вызову [`initHighlightingOnLoad`][1], но
с использованием `document.addEventListener`:
```js
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('pre code').forEach((block) => {
hljs.highlightBlock(block);
});
});
```
Вы можете использовать любые теги разметки вместо `<pre><code>`. Если
используете контейнер, не сохраняющий переводы строк, вам нужно сказать
highlight.js использовать для них тег `<br>`:
```js
hljs.configure({useBR: true});
document.querySelectorAll('div.code').forEach((block) => {
hljs.highlightBlock(block);
});
```
Другие опции можно найти в документации функции [`configure`][4].
## Web Workers
Подсветку можно запустить внутри web worker'а, чтобы окно
браузера не подтормаживало при работе с большими кусками кода.
В основном скрипте:
```js
addEventListener('load', () => {
const code = document.querySelector('#code');
const worker = new Worker('worker.js');
worker.onmessage = (event) => { code.innerHTML = event.data; }
worker.postMessage(code.textContent);
});
```
В worker.js:
```js
onmessage = (event) => {
importScripts('<path>/highlight.pack.js');
const result = self.hljs.highlightAuto(event.data);
postMessage(result.value);
};
```
## Установка библиотеки
Highlight.js можно использовать в браузере прямо с CDN хостинга или скачать
индивидуальную сборку, а также установив модуль на сервере. На
[странице загрузки][5] подробно описаны все варианты.
**Не подключайте GitHub напрямую.** Библиотека не предназначена для
использования в виде исходного кода, а требует отдельной сборки. Если вам не
подходит ни один из готовых вариантов, читайте [документацию по сборке][6].
**Файл на CDN содержит не все языки.** Иначе он будет слишком большого размера.
Если нужного вам языка нет в [категории "Common"][5], можно дообавить его
вручную:
```html
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.4.0/languages/go.min.js"></script>
```
**Про Almond.** Нужно задать имя модуля в оптимизаторе, например:
```
r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js
```
## Лицензия
Highlight.js распространяется под лицензией BSD. Подробнее читайте файл
[LICENSE][7].
## Ссылки
Официальный сайт билиотеки расположен по адресу <https://highlightjs.org/>.
Более подробная документация по API и другим темам расположена на
<http://highlightjs.readthedocs.io/>.
Авторы и контрибьюторы перечислены в файле [AUTHORS.ru.txt][8] file.
[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload
[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html
[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block
[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options
[5]: https://highlightjs.org/download/
[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html
[7]: https://github.com/highlightjs/highlight.js/blob/master/LICENSE
[8]: https://github.com/highlightjs/highlight.js/blob/master/AUTHORS.ru.txt

4294
web/root/custom/js/all.js
File diff suppressed because it is too large
View File

5
web/root/custom/js/all.min.js
File diff suppressed because it is too large
View File

557
web/root/custom/js/brands.js
File diff suppressed because it is too large
View File

5
web/root/custom/js/brands.min.js
File diff suppressed because it is too large
View File

247
web/root/custom/js/cfosgroups.js

@ -0,0 +1,247 @@
var HttpClient = function() {
this.get = function(aUrl, aCallback) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
aCallback(anHttpRequest.responseText);
}
anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
}
}
let groupdiv = ''
if (document.getElementById('basegroup')) { groupdiv = 'basegroup'}
if (document.getElementById('byrolegroup')) { groupdiv = 'byrolegroup'}
if (document.getElementById('bylocgroup')) { groupdiv = 'bylocgroup'}
if (groupdiv) {
var client = new HttpClient();
client.get('data/cfosgroups.json', function(response) {
let groups = JSON.parse(response)
let html = ''
html += '<div class=".container-fluid">' + "\n"
html += '<div class="row" style="width: 990px; min-width: 990px;">' + "\n"
for (r in groups['DIV_TABLE']) {
for (c in groups['DIV_TABLE'][r]) {
let email = groups['DIV_TABLE'][r][c]['EMAIL_ADDRESS']
if (groups['DIV_TABLE'][r][c]['ALIAS_ADDRESS']) { email = groups['DIV_TABLE'][r][c]['ALIAS_ADDRESS'] }
// if(email == 'everyone@cfos.uaf.edu') { console.log(JSON.stringify(groups['DIV_TABLE'][r][c], null, 2)) }
let id = email.replace(/\@\S+$/, '')
let title = groups['DIV_TABLE'][r][c]['NAME'] + "\nGroup: " + groups['DIV_TABLE'][r][c]['EMAIL_ADDRESS'] + "\n"
if (!groups['DIV_TABLE'][r][c]['ACTIVE']) { title += "INACTIVE"}
let classes = ""
let style = ""
for (cls in groups['DIV_TABLE'][r][c]['CLASSES']) {
classes += groups['DIV_TABLE'][r][c]['CLASSES'][cls] + ' '
switch (groups['DIV_TABLE'][r][c]['CLASSES'][cls]) {
case 'bylocgroup':
style = 'style="visibility:hidden;"'
break;
case 'byrolegroup':
style = 'style="visibility:hidden;"'
break;
case 'topgroup':
style = 'style="visibility:hidden;"'
break;
default:
}
}
classes = classes.replace(/\s+$/, '')
let icon_class= ''
for (di in groups['META']['DIV_ICONS']) {
let regx = RegExp('^' + di)
if (email.match(regx)) {
for (ic in groups['META']['DIV_ICONS'][di])
icon_class += groups['META']['DIV_ICONS'][di][ic] + ' '
}
}
icon_class = icon_class.replace(/\s+$/, '')
// console.log(r + ':' + c + ' ' + email + ' [' + classes + ']')
let mouseinout = ""
mouseinout = 'onmouseover="highlight_distribution(' + "'" + id + "'" + ')"' + ' ' + 'onmouseout="unhighlight_distribution(' + "'" + id + "'" + ')"'
html += '<div id="' + id + '" class="' + classes + '" ' + style + ' ' + mouseinout + '>' + "\n"
html += '<span title="' + title + '" style="font-size: 1.5em;" class="' + icon_class + '"></span><br>' + "\n"
if (groups['DIV_TABLE'][r][c]['ACTIVE']) {
html += '<a title="' + title + '" target="_blank" style="font-weight: bold;" href="mailto:' + email +'">' + email + '</a>' + "\n"
} else {
html += '<span title="' + title + '" style="font-weight: bold; color: #999;">' + email + '</span>'
}
// html += email + "\n"
// html += "\n"
for (cls in groups['DIV_TABLE'][r][c]['CLASSES']) {
classes += groups['DIV_TABLE'][r][c]['CLASSES'][cls] + ' '
switch (groups['DIV_TABLE'][r][c]['CLASSES'][cls]) {
case 'bylocgroup':
html += '<div style="text-align: right; color: #090;"><span style="font-size: 1.5em;" class="fas fa-long-arrow-alt-right"></span></div>' + "\n"
break;
case 'byrolegroup':
html += '<div><span style="font-size: 2em; color: #08a0c0;" class="fas fa-long-arrow-alt-down"></span></div>' + "\n"
break;
case 'topgroup':
html += '<div style="text-align: right;"><span style="font-size: 2em; color: #08a0c0;" class="fas fa-long-arrow-alt-right"></span></div>' + "\n"
break;
default:
}
}
html += '</div>' + "\n"
}
}
html += '</div>' + "\n"
html += '</div>' + "\n"
// console.log(groupdiv + ' => ' + html)
document.getElementById(groupdiv).innerHTML = html
});
}
if (document.getElementById('jsondebug')) {
debug()
}
// ----------------------------------------------------------------
function debug() {
var client = new HttpClient();
client.get('data/cfosgroups.json', function(response) {
let input = JSON.parse(response)
document.getElementById('jsondebug').innerHTML = '<pre id="json-viewer">' + '</pre>'
$('#json-viewer').jsonViewer(input, {withLinks: true})
});
}
function toggle_byloc() {
if (document.getElementById('btn_byloc')) {
// console.log(JSON.stringify(document.getElementById('btn_byloc').classList, null, 2))
// console.log(JSON.stringify(document.getElementsByClassName('bylocgroup'), null, 2))
switch (document.getElementById('btn_byloc').classList[1]) {
case 'fa-toggle-on':
for (e in document.getElementsByClassName('bylocgroup')) {
// console.log(e)
if (e.match(/^\d+$/)) {
document.getElementsByClassName('bylocgroup')[e].style.visibility = 'hidden'
}
}
document.getElementById('btn_byloc').classList.remove('fa-toggle-on')
document.getElementById('btn_byloc').classList.add('fa-toggle-off')
break;
case 'fa-toggle-off':
for (e in document.getElementsByClassName('bylocgroup')) {
// console.log(e)
if (e.match(/^\d+$/)) {
document.getElementsByClassName('bylocgroup')[e].style.visibility = 'visible'
}
}
document.getElementById('btn_byloc').classList.remove('fa-toggle-off')
document.getElementById('btn_byloc').classList.add('fa-toggle-on')
break;
default:
console.log("ERROR: Invalid Class: " + document.getElementById('btn_byloc').classList[1])
}
}
}
function toggle_byrole() {
if (document.getElementById('btn_byrole')) {
// console.log(JSON.stringify(document.getElementById('btn_byrole').classList, null, 2))
// console.log(JSON.stringify(document.getElementsByClassName('byrolegroup'), null, 2))
switch (document.getElementById('btn_byrole').classList[1]) {
case 'fa-toggle-on':
for (e in document.getElementsByClassName('byrolegroup')) {
if (e.match(/^\d+$/)) {
document.getElementsByClassName('byrolegroup')[e].style.visibility = 'hidden'
// document.getElementsByClassName('byrolegroup')[e].style.display = 'none'
}
}
for (e in document.getElementsByClassName('topgroup')) {
if (e.match(/^\d+$/)) {
document.getElementsByClassName('topgroup')[e].style.visibility = 'hidden'
}
}
document.getElementById('btn_byrole').classList.remove('fa-toggle-on')
document.getElementById('btn_byrole').classList.add('fa-toggle-off')
break;
case 'fa-toggle-off':
for (e in document.getElementsByClassName('byrolegroup')) {
if (e.match(/^\d+$/)) {
document.getElementsByClassName('byrolegroup')[e].style.visibility = 'visible'
}
}
for (e in document.getElementsByClassName('topgroup')) {
if (e.match(/^\d+$/)) {
document.getElementsByClassName('topgroup')[e].style.visibility = 'visible'
}
}
document.getElementById('btn_byrole').classList.remove('fa-toggle-off')
document.getElementById('btn_byrole').classList.add('fa-toggle-on')
break;
default:
console.log("ERROR: Invalid Class: " + document.getElementById('btn_byrole').classList[1])
}
}
}
var mailflow = {}
mailflow['everyone'] = ['faculty', 'staff', 'students', 'faculty-fairbanks', 'staff-fairbanks', 'students-fairbanks', 'undergrads', 'faculty-juneau', 'staff-juneau', 'students-juneau', 'faculty-kodiak', 'staff-kodiak', 'students-kodiak', 'faculty-seward', 'staff-seward', 'students-seward', 'faculty-map', 'staff-map', 'postdocs', 'skq-crew', 'faculty-other', 'staff-other', 'students-other']
mailflow['faculty'] = ['faculty-fairbanks', 'faculty-juneau', 'faculty-kodiak', 'faculty-seward', 'faculty-map', 'postdocs', 'faculty-other']
mailflow['staff'] = ['staff-fairbanks', 'staff-juneau', 'staff-kodiak', 'staff-seward', 'staff-map', 'skq-crew', 'staff-other']
mailflow['students'] = ['students-fairbanks', 'undergrads', 'students-juneau', 'students-kodiak', 'students-seward', 'students-other']
mailflow['fairbanks'] = ['faculty-fairbanks', 'staff-fairbanks', 'students-fairbanks', 'undergrads']
mailflow['juneau'] = ['faculty-juneau', 'staff-juneau', 'students-juneau']
mailflow['kodiak'] = ['faculty-kodiak', 'staff-kodiak', 'students-kodiak']
mailflow['seward'] = ['faculty-seward', 'staff-seward', 'students-seward']
function highlight_distribution(distgroup) {
if (document.getElementById(distgroup)) {
// console.log(distgroup)
// document.getElementById(distgroup).style.backgroundColor = '#d9eff7'
document.getElementById(distgroup).style.backgroundColor = '#83eefc'
// console.log(distgroup + ' => ' + JSON.stringify(mailflow[distgroup], null, 2))
for (g in mailflow[distgroup]) {
// console.log(mailflow[distgroup][g])
// document.getElementById(mailflow[distgroup][g]).style.backgroundColor = '#d9eff7'
document.getElementById(mailflow[distgroup][g]).style.backgroundColor = '#83eefc'
}
}
}
function unhighlight_distribution(distgroup) {
if (document.getElementById(distgroup)) {
// console.log(distgroup)
document.getElementById(distgroup).style.backgroundColor = '#fff'
for (g in mailflow[distgroup]) {
document.getElementById(mailflow[distgroup][g]).style.backgroundColor = '#fff'
}
}
}

53
web/root/custom/js/config/AM_CHTML-full.js
File diff suppressed because it is too large
View File

49
web/root/custom/js/config/AM_CHTML.js
File diff suppressed because it is too large
View File

61
web/root/custom/js/config/AM_HTMLorMML-full.js
File diff suppressed because it is too large
View File

55
web/root/custom/js/config/AM_HTMLorMML.js
File diff suppressed because it is too large
View File

53
web/root/custom/js/config/AM_SVG-full.js
File diff suppressed because it is too large
View File

47
web/root/custom/js/config/AM_SVG.js
File diff suppressed because it is too large
View File

83
web/root/custom/js/config/Accessible-full.js
File diff suppressed because it is too large
View File

77
web/root/custom/js/config/Accessible.js
File diff suppressed because it is too large
View File

53
web/root/custom/js/config/MML_CHTML-full.js
File diff suppressed because it is too large
View File

49
web/root/custom/js/config/MML_CHTML.js
File diff suppressed because it is too large
View File

61
web/root/custom/js/config/MML_HTMLorMML-full.js
File diff suppressed because it is too large
View File

56
web/root/custom/js/config/MML_HTMLorMML.js
File diff suppressed because it is too large
View File

53
web/root/custom/js/config/MML_SVG-full.js
File diff suppressed because it is too large
View File

49
web/root/custom/js/config/MML_SVG.js
File diff suppressed because it is too large
View File

19
web/root/custom/js/config/MMLorHTML.js

@ -0,0 +1,19 @@
/*
* /MathJax-v2/config/MMLorHTML.js
*
* Copyright (c) 2009-2018 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function(c,g){var f="2.7.0";var a=MathJax.Hub.CombineConfig("MMLorHTML",{prefer:{MSIE:"MML",Firefox:"HTML",Opera:"HTML",Chrome:"HTML",Safari:"HTML",other:"HTML"}});var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var b=(g.version==="0.0"||g.versionAtLeast(e[g]||0));var d=(g.isFirefox&&g.versionAtLeast("1.5"))||(g.isMSIE&&g.hasMathPlayer)||(g.isSafari&&g.versionAtLeast("5.0"))||(g.isOpera&&g.versionAtLeast("9.52"));c.Register.StartupHook("End Config",function(){var h=(a.prefer&&typeof(a.prefer)==="object"?a.prefer[MathJax.Hub.Browser]||a.prefer.other||"HTML":a.prefer);if(b||d){if(d&&(h==="MML"||!b)){if(MathJax.OutputJax.NativeMML){MathJax.OutputJax.NativeMML.Register("jax/mml")}else{c.config.jax.unshift("output/NativeMML")}c.Startup.signal.Post("NativeMML output selected")}else{if(MathJax.OutputJax["HTML-CSS"]){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}else{c.config.jax.unshift("output/HTML-CSS")}c.Startup.signal.Post("HTML-CSS output selected")}}else{c.PreProcess.disabled=true;c.prepareScripts.disabled=true;MathJax.Message.Set(["MathJaxNotSupported","Your browser does not support MathJax"],null,4000);c.Startup.signal.Post("MathJax not supported")}})})(MathJax.Hub,MathJax.Hub.Browser);MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");

19
web/root/custom/js/config/Safe.js

@ -0,0 +1,19 @@
/*
* /MathJax-v2/config/Safe.js
*
* Copyright (c) 2009-2018 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
MathJax.Hub.Register.StartupHook("End Config",function(){if(!MathJax.Hub.config.extensions){MathJax.Hub.config.extensions=[]}MathJax.Hub.config.extensions.push("Safe.js")});MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");

75
web/root/custom/js/config/TeX-AMS-MML_HTMLorMML-full.js
File diff suppressed because it is too large
View File

69
web/root/custom/js/config/TeX-AMS-MML_HTMLorMML.js
File diff suppressed because it is too large
View File

67
web/root/custom/js/config/TeX-AMS-MML_SVG-full.js
File diff suppressed because it is too large
View File

63
web/root/custom/js/config/TeX-AMS-MML_SVG.js
File diff suppressed because it is too large
View File

61
web/root/custom/js/config/TeX-AMS_CHTML-full.js
File diff suppressed because it is too large
View File

57
web/root/custom/js/config/TeX-AMS_CHTML.js
File diff suppressed because it is too large
View File

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save