Files
aaPanel/BTPanel/templates/default/layout.html
T
jose 3ac20e08ce v6.8.12
1. Add disk IO information to the homepage
2. Add a clear list button in the upload window
3. Optimize the background task overhead of the panel
4. Optimize the disk information caching mechanism
5. Panel Pro edition is online
6. Optimize panel resource usage
7. Optimize SSL certificate renewal
8. Fix the problem of reporting an error when the security entrance is empty
9. Fix the problem of infinite recursion when copying directories in extreme cases
2021-06-11 11:50:57 +08:00

285 lines
13 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="referer" content="never" />
<meta name="renderer" content="webkit">
<title>{{g.title}}</title>
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
<link href="{{g.cdn_url}}/bootstrap-3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<link href="{{g.cdn_url}}/css/site.css?version={{g['version']}}&repair={{data['js_random']}}" rel="stylesheet" />
<link href="{{g.cdn_url}}/codemirror/lib/codemirror.css?20191127={{g['version']}}" rel="stylesheet" />
<!--[if lte IE 9]>
<script src="/static/js/requestAnimationFrame.js"></script>
<![endif]-->
<style>
.top-tips {
height: 50px;
width: 100%;
color: red;
position: fixed;
top: 0;
z-index: 999;
background-color: white;
text-align: center;
line-height: 50px;
font-size: 20px;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
display: none;
}
.contextmenu {
position: absolute;
width: 120px;
background: #FFFFFF;
border-radius: 5px;
overflow: hidden;
z-index: 99999999;
}
.contextmenu li {
border-left: 3px solid transparent;
transition: ease 0.3s;
}
.contextmenu li:hover {
background: #707070;
border-left: 3px solid #333;
}
.contextmenu li a {
display: block;
padding: 5px 10px;
color: #000000;
text-decoration: none;
transition: ease 0.3s;
cursor: default;
}
.contextmenu li:hover a {
color: #fff;
}
</style>
</head>
<body>
<div class="bt-warp bge6">
<div class="top-tips">The current version of IE browser is too low, some functions cannot be displayed, please change to other browsers!</div>
<a style="display:none;" id="panel_debug" data="{{g['debug']}}" data-pyversion="{{g['pyversion']}}"></a>
<a style="display:none;" id="request_token_head" token="{{session['request_token_head']}}"></a>
<div id="container" class="container-fluid">
<div class="sidebar-scroll">
<div class="sidebar-auto">
<div id="task" class="task cw" onclick="messagebox()">0</div>
<h3 class="mypcip"><span class="f14 cw">{{session['address']}}</span></h3>
<ul class="menu">
{% for menu in g['menus'] %}
{% if menu['href'] == g.uri %}
<li id="{{menu['id']}}" class="current"> <a class="{{menu['class']}}" href="{{menu['href']}}">{{menu['title']}}</a></li>
{% else %}
<li id="{{menu['id']}}"> <a class="{{menu['class']}}" href="{{menu['href']}}">{{menu['title']}}</a></li>
{% endif %}
{% endfor %}
</ul>
<div id="newbtpc"></div>
<div class="btpc-plus" onclick="bindBTPanel(0,'b')">+</div>
</div>
</div>
<button style="display: none;" id="bt_copys" class="bt_copy" data-clipboard-text=""></button>
<a style="display: none;" id="defaultPath">{{session['config']['sites_path']}}</a> {% block content %}{% endblock %}
<div class="footer bgw">{{session['brand']}}{{session['product']}} &copy;2014-{{session['yaer']}} {{session['brand']}} (bt.cn)
<!--<a style="margin-left:20px;color:#20a53a;" href="http://www.bt.cn/bbs" target="_blank">求助|建议请上宝塔论坛</a>-->
<a style="margin-left:20px;color:#20a53a;" href="http://forum.aapanel.com" target="_blank">{{session['bt_help']}}</a>
<a style="margin-left:20px;color:#20a53a;" href="https://doc.aapanel.com/web/#/3?page_id=117" target="_blank">Documentation</a>
</div>
</div>
<script src="{{g.cdn_url}}/js/jquery-1.10.2.min.js"></script>
<script src="{{g.cdn_url}}/layer/layer.js?version={{g['version']}}"></script>
<script src="{{g.cdn_url}}/language/{{session['lan']}}/lan.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script src="{{g.cdn_url}}/js/clipboard.min.js" defer></script>
<script src="{{g.cdn_url}}/laydate/laydate.js" defer></script>
<script src="{{g.cdn_url}}/js/jquery.qrcode.min.js" defer></script>
<!-- 以下文件未来将被剔除 -->
<script src="{{g.cdn_url}}/js/bootstrap.min.js"></script>
<script src="{{g.cdn_url}}/js/public.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script src="{{g.cdn_url}}/js/public_backup.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script src="{{g.cdn_url}}/codemirror/lib/codemirror.js" defer></script>
<!-- End -->
<script type="text/javascript" src="{{g.cdn_url}}/js/tools.min.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
{% block scripts %}{% endblock %}
<script type="text/javascript">
if (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE", "")) < 9) {
$(".main-content").css("margin-top", "50px");
$('.top-tips').show();
}
function IEVersion() {
// 取得浏览器的userAgent字符串
var userAgent = navigator.userAgent;
// 判断是否为小于IE11的浏览器
var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
// 判断是否为IE的Edge浏览器
var isEdge = userAgent.indexOf('Edge') > -1 && !isLessIE11;
// 判断是否为IE11浏览器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1;
if (isLessIE11) {
var IEReg = new RegExp('MSIE (\\d+\\.\\d+);');
// 正则表达式匹配浏览器的userAgent字符串中MSIE后的数字部分,,这一步不可省略!!!
IEReg.test(userAgent);
// 取正则表达式中第一个小括号里匹配到的值
var IEVersionNum = parseFloat(RegExp['$1']);
if (IEVersionNum === 7) {// IE7
return 7
} else if (IEVersionNum === 8) {// IE8
return 8
} else if (IEVersionNum === 9) {// IE9
return 9
} else if (IEVersionNum === 10) { // IE10
return 10
} else {// IE版本<7
return 6
}
} else if (isEdge) { // edge
return 'edge'
} else if (isIE11) {// IE11
return 11
} else {// 不是ie浏览器
return -1
}
}
if(IEVersion() != -1 && IEVersion() < 9){
$(".main-content").css("margin-top", "50px");
$('.top-tips').show();
}
$("#setBox").click(function() {
if ($(this).prop("checked")) {
$("input[name=id]").prop("checked", true);
} else {
$("input[name=id]").prop("checked", false);
}
});
setCookie('order', 'id desc');
var is_files_html = false;
var task_open = 0;
var task_close = false;
if ($(".current").attr("id") == 'memuAfiles') {
is_files_html = true;
}
function task_stat(my_init) {
if (!my_init) {
my_init = 0;
if (task_open) return;
}
if (task_close) return;
$.post('/task?action=get_task_lists', {
status: -3
}, function(task_list) {
if (task_list.length == 0) {
if (my_init && is_files_html) GetFiles(getCookie('Path'));
if (task_open) {
layer.close(task_open);
task_open = false;
}
return;
}
console.log(task_list.length)
var msg_body = '';
var is_add = false;
for (var i = 0; i < task_list.length; i++) {
if (task_list[i]['status'] == -1) {
if (!task_open || !$(".message-list").attr("class")) {
show_task();
}
if (task_list[i]['type'] == '1') {
msg_body += '<div class="mw-con">\
<ul class="waiting-down-list">\
<li>\
<div class="down-filse-name"><span class="fname" style="width:80%;" title="Downloading: ' + task_list[i].shell + '">Downloading: ' + task_list[i].shell + '</span><span style="position: absolute;left: 84%;top: 25px;color: #999;">' + task_list[i].log.pre + '%</span><span class="btlink" onclick="remove_task(' + task_list[i].id + ')" style="position: absolute;top: 25px;right: 20px;">Cancel</span></div>\
<div class="down-progress"><div class="done-progress" style="width:' + task_list[i].log.pre + '%"></div></div>\
<div class="down-info"><span class="total-size"> ' + task_list[i].log.used + '/' + ToSize(task_list[i].log.total) + '</span><span class="speed-size">' + (task_list[i].log.speed == 0 ? 'On connection..' : task_list[i].log.speed) + '/s</span><span style="margin-left: 20px;">Estimate: ' + task_list[i].log.time + '</span></div>\
</li>\
</ul>\
</div>'
} else {
msg_body += '<div class="mw-title"><span style="max-width: 88%;display: block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">' + task_list[i].name + ': ' + task_list[i].shell + '</span><span class="btlink" onclick="remove_task(' + task_list[i].id + ')" style="position: absolute;top: 10px;right: 15px;">Cancel</span></div>\
<div class="mw-con codebg">\
<code>' + task_list[i].log + '</code>\
</div>'
}
} else {
if (!is_add) {
msg_body += '<div class="mw-title">Waiting to execute task</div><div class="mw-con"><ul class="waiting-list">';
is_add = true;
}
msg_body += '<li><span class="wt-list-name" style="width: 90%;">' + task_list[i].name + ': ' + task_list[i].shell + '</span><span class="mw-cancel" onclick="remove_task(' + task_list[i].id + ')">X</span></li>';
}
}
if (task_open) {
if (is_add) {
msg_body += '</ul></div>';
}
$(".message-list").html(msg_body);
}
if (my_init > 3) {
if (is_files_html) GetFiles(getCookie('Path'));
my_init = 1;
}
my_init += 1
setTimeout(function() {
task_stat(my_init);
}, 1000);
});
}
function show_task() {
task_open = layer.open({
type: 1,
title: "Real time task queue",
area: '500px',
closeBtn: 2,
shadeClose: false,
shade: false,
offset: 'auto',
content: '<div style="margin: 10px;" class="message-list"></div>',
cancel: function() {
task_close = true;
}
});
}
function remove_task(id) {
loadT = layer.msg('Canceling task...', {
time: 0,
icon: 16,
shade: [0.3, '#000']
});
$.post('/task?action=remove_task', {
id: id
}, function(rdata) {
layer.close(loadT)
layer.msg(rdata.msg);
});
}
loadScript([
'{{g.cdn_url}}/laydate/laydate.js',
'{{g.cdn_url}}/js/jquery.qrcode.min.js',
'{{g.cdn_url}}/js/clipboard.min.js'
], function(e) {
});
task_stat();
</script>
</body>
</html>