Files
pairgoth/view-webapp/src/main/webapp/WEB-INF/layouts/standard.html
Claude Brisson afbc482dd8 Fix devs mail
2024-05-10 10:04:15 +02:00

151 lines
4.4 KiB
HTML

<!DOCTYPE html>
<html lang="${request.lang}">
<head>
<meta charset="UTF-8">
<title>Pairgoth</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Pairgoth Go Paring Engine">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<script type="text/javascript">
// #[[
let initFunctions = [];
function onLoad(fct) {
if (typeof(fct) == "function") initFunctions.push(fct);
}
document.addEventListener('DOMContentLoaded', () => {
initFunctions.forEach(fct => {
fct();
});
});
// ]]#
</script>
<style>
body.initial {
display: none;
}
</style>
</head>
<body class="vert flex initial">
#* Debugging code to list all web context properties
<blockquote>
#foreach($attr in $application.getAttributeNames())
<div>$attr = $application.getAttribute($attr)</div>
#end
</blockquote>
*#
#if($params.id)
#set($tour = $api.get("tour/${params.id}"))
#end
<div id="header" class="horz flex">
<div id="logo">
<a href="/"><img src="/img/logov2.svg"/></a>
</div>
#if($tour)
#translate('tour-menu.inc.html')
#end
<div id="header-right">
<div id="lang">
<i class="$translate.flags[$request.lang] flag"></i>
</div>
#if($session.logged)
<div id="logout">
<i class="fa fa-sign-out"></i>
</div>
#end
</div>
</div>
<div id="center">
<div id="inner">
#if($tour && $tour.error)
<script type="text/javascript">
onLoad(()=>{
showError("$esc.javascript($tour.error)");
});
</script>
#else
#translate($page)
#end
</div>
</div>
<div id="footer" class="horz flex">
<div id="version">pairgoth v$version</div>
<div id="contact"><a href="mailto:pairgoth-dev@jeudego.org">contact</a></div>
</div>
<div id="feedback">
<div id="success" class="hidden"></div>
<div id="error" class="hidden"></div>
</div>
<div id="backdrop"></div>
<div id="dimmer"></div>
<div id="lang-list">
#foreach($lang in $translate.flags.entrySet())
#if($lang != $request.lang)
<a class="lang" data-lang="$lang.key" href="#"><i class="$lang.value flag"></i>&nbsp;$lang.key</a>
#end
#end
</div>
<script type="text/javascript" src="/lib/store2-2.14.2.min.js"></script>
<script type="text/javascript" src="/lib/tablesort-5.4.0/tablesort.min.js"></script>
<script type="text/javascript" src="/lib/tablesort-5.4.0/sorts/tablesort.number.min.js"></script>
<link rel="stylesheet" href="/lib/tablesort-5.4.0/tablesort.css"/>
<script type="text/javascript" src="/lib/imaskjs-7.1.3/imask.min.js"></script>
<script type="text/javascript" src="/js/api.js?v=$version"></script>
<script type="text/javascript" src="/js/main.js?v=$version"></script>
<script type="text/javascript" src="/js/domhelper.js?v=$version"></script>
<link rel="stylesheet" href="/lib/fork-awesome-1.2.0/fork-awesome.min.css"/>
<link rel="stylesheet" href="/css/main.css?v=$version"/>
#if($css)
<link rel="stylesheet" href="${css}?v=$version"/>
#end
<script type="text/javascript">
const lang = '${request.lang}';
const locale = '${request.locale}';
// #[[
onLoad(() => {
$('body').removeClass('initial');
$('#lang').on('click', e => {
$('#lang-list').toggleClass('shown');
});
$('.lang').on('click', e => {
let lang = e.target.closest('.lang').data('lang');
document.location.href = document.location.href.replace(/\/[a-z]{2}\//, `/${lang}/`);
return false;
});
document.on('click', e => {
if ($('#lang-list').hasClass('shown') && !e.target.closest('.lang,#lang')) {
$('#lang-list').removeClass('shown');
}
});
$('.popup .popup-footer .close').on('click', e => {
let popup = e.target.closest('.popup');
if (popup) {
popup.classList.remove('shown');
$('body').removeClass('dimmed');
}
});
$('#logout').on('click', e => {
api.postJson('logout', {})
.then(ret => {
if (ret !== 'error') {
document.location.href = '/index';
}
});
});
});
// syntaxic sugar for IMask
NodeList.prototype.imask = function(options) {
this.forEach(function (elem, i) {
elem.imask(options);
});
return this;
}
HTMLInputElement.prototype.imask = function(options) {
IMask(this, options);
}
// ]]#
</script>
</body>
</html>