You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cms/templates/index.html

136 lines
4.9 KiB
HTML

<!--
(c) 2004 - 2022 Health Information Privacy Laboratory
Vanderbilt University Medical Center
This is a flask-based cms that considers the following for a website :
- header
- content
- menu
- content
- footer
-->
<!DOCTYPE html>
<html lang="en">
<head >
<title>{{layout.header.title}}</title>
<link rel="shortcut icon" href="{{system.icon}}">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="quick cms, cms, python, flask, qcms">
<meta name="robots" content="/, follow, max-snippet:-1, max-image-preview:large">
<link href="{{system.context}}/static/css/default.css" rel="stylesheet" type="text/css">
<link href="{{system.context}}/static/css/menu.css" rel="stylesheet" type="text/css">
<link href="{{system.context}}/static/css/border.css" rel="stylesheet" type="text/css">
<!-- <link href="{{system.context}}/static/css/animation/_ocean.css" rel="stylesheet" type="text/css"> -->
<link href="{{system.context}}/static/css/themes/{{system.theme}}" rel="stylesheet" type="text/css">
<link href="{{system.context}}/static/css/icons.css" rel="stylesheet" type="text/css">
<script src="{{system.context}}/static/js/jx/dom.js"></script>
<script src="{{system.context}}/static/js/jx/utils.js"></script>
<script src="{{system.context}}/static/js/jx/rpc.js"></script>
<script src="{{system.context}}/static/js/jx/ext/modal.js"></script>
<script src="{{system.context}}/static/js/jquery/jquery.js"></script>
<script src="{{system.context}}/static/js/menu.js"></script>
<script src="{{system.context}}/static/js/search.js"></script>
<script src="{{system.context}}/static/js/fontawesome/js/all.js"></script>
</head>
<script>
sessionStorage.setItem('{{system.id}}','{{system.context|safe}}')
var _layout = {{layout|tojson}}
//
// Rendering here requires an observer design pattern because calls are asynchronous
//
/**
* @id _domURI of the pane where the output is to be written
* @uri _fileURI of the file
*/
var CMSObserver = function(_domId,_fileURI){
this._domId = _domId
this._fileURI = _fileURI
this.apply = function (_caller){
var http = HttpClient.instance()
http.setHeader('uri',_fileURI)
var uri = '{{context}}/page'
try{
http.post(uri,function(x){
console.log(jx.dom.exists(_domId))
if (x.status == 200){
// jx.dom.set.value(_domId,x.responseText)
var _domElement = jx.dom.get.instance('div')
_domElement.innerHTML = x.responseText
jx.dom.append(_domId, _domElement)
}
_caller.notify()
})
}catch(error){
_caller.notify()
}
}
}
var finalize = function(_id){
this.apply = function(_caller){
menu.runScript('#'+_id)
}
}
if (_layout.on != null ){
//
// load and error are required
$(document).ready(function(){
jx.utils.keys(_layout.on.load).forEach(function(_id){
var observers =
jx.utils.patterns.visitor(_layout.on.load[_id], function(_uri){
return new CMSObserver(_id,_uri)
})
observers.push(new finalize(_id))
//
// At this point we can execute the observer design pattern
//
console.log(observers)
jx.utils.patterns.observer(observers,'apply')
})
})
}
</script>
<body>
<div class="main">
<div id="header" class="header" onclick="window.location.href='{{system.context}}/'" style="cursor:pointer">
{%include "header.html" %}
</div>
<div id="menu" class="menu">
{%include "menu.html" %}
</div>
<div id="content" class="content">
{%include "content.html" %}
</div>
<div id="pane" class="pane">
{%include "pane.html" %}
</div>
<div id="footer" class="footer">
{%include "footer.html" %}
</div>
</div>
</body>
</html>