mdserver-web/static/js/soft.js

418 lines
16 KiB
JavaScript
Raw Normal View History

2018-11-26 02:54:42 -05:00
//转换单们到MB
2018-11-29 05:19:18 -05:00
function toSizeM(byteLen) {
2018-11-26 02:54:42 -05:00
var a = parseInt(byteLen) / 1024 / 1024;
return a || 0;
2018-09-13 01:36:11 -04:00
}
2018-11-26 03:08:19 -05:00
//重置插件弹出框宽度
2018-11-26 02:57:49 -05:00
function resetPluginWinWidth(width){
$("div[id^='layui-layer'][class*='layui-layer-page']").width(width);
}
2018-09-13 01:36:11 -04:00
//软件管理窗口
2018-11-29 13:03:05 -05:00
function softMain(name, version) {
2018-11-21 06:27:26 -05:00
var loadT = layer.msg("正在处理,请稍后...", { icon: 16, time: 0, shade: [0.3, '#000'] });
2018-11-21 06:15:37 -05:00
$.get('/plugins/setting?name='+name, function(rdata) {
2018-09-25 05:01:20 -04:00
layer.close(loadT);
layer.open({
type: 1,
area: '640px',
2018-11-21 06:27:26 -05:00
title: name + "管理",
2018-09-25 05:01:20 -04:00
closeBtn: 2,
shift: 0,
2018-11-21 06:27:26 -05:00
content: rdata
2018-09-25 05:01:20 -04:00
});
$(".bt-w-menu p").click(function() {
$(this).addClass("bgw").siblings().removeClass("bgw");
});
});
2018-09-13 01:36:11 -04:00
}
2018-11-25 21:55:53 -05:00
2018-09-13 01:36:11 -04:00
//插件设置菜单
2018-11-26 06:18:50 -05:00
function pluginMan(name, title) {
2018-09-25 05:01:20 -04:00
loadT = layer.msg(lan.soft.menu_temp, { icon: 16, time: 0, shade: [0.3, '#000'] });
2018-11-21 06:15:37 -05:00
$.get('/plugins/setting?name=' + name, function(rhtml) {
2018-09-25 05:01:20 -04:00
layer.close(loadT);
if (rhtml.status === false) {
if (name == "phpguard") {
layer.msg(lan.soft.menu_phpsafe, { icon: 1 })
} else {
layer.msg(rhtml.msg, { icon: 2 });
}
return;
}
layer.open({
type: 1,
shift: 5,
offset: '20%',
closeBtn: 2,
area: '700px',
title: '' + title,
content: rhtml
});
rcode = rhtml.split('<script type="javascript/text">')[1]
if (!rcode) rcode = rhtml.split('<script type="text/javascript">')[1]
rcode = rcode.replace('</script>', '');
setTimeout(function() {
if (!!(window.attachEvent && !window.opera)) {
execScript(rcode);
} else {
window.eval(rcode);
}
}, 200)
});
2018-09-13 01:36:11 -04:00
}
//取软件列表
2018-11-30 04:39:38 -05:00
function getSList(isdisplay) {
2018-09-25 05:01:20 -04:00
if (isdisplay !== true) {
var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] })
}
if (!isdisplay || isdisplay === true)
isdisplay = getCookie('p' + getCookie('softType'));
if (isdisplay == true || isdisplay == 'true') isdisplay = 1;
var search = $("#SearchValue").val();
if (search != '') {
search = '&search=' + search;
}
var type = '';
var istype = getCookie('softType');
if (istype == 'undefined' || istype == 'null' || !istype) {
istype = '0';
}
2018-10-10 21:55:27 -04:00
2018-09-25 05:01:20 -04:00
type = '&type=' + istype;
var page = '';
if (isdisplay) {
page = '&p=' + isdisplay;
setCookie('p' + getCookie('softType'), isdisplay);
}
2018-10-10 21:55:27 -04:00
var condition = (search + type + page).slice(1);
2018-11-29 08:04:13 -05:00
$.get('/plugins/list?' + condition, '', function(rdata) {
2018-09-25 05:01:20 -04:00
layer.close(loadT);
var tBody = '';
var sBody = '';
var pBody = '';
for (var i = 0; i < rdata.type.length; i++) {
var c = '';
if (istype == rdata.type[i].type) {
c = 'class="on"';
2018-09-13 01:36:11 -04:00
}
2018-09-25 05:01:20 -04:00
tBody += '<span typeid="' + rdata.type[i].type + '" ' + c + '>' + rdata.type[i].title + '</span>';
}
$(".softtype").html(tBody);
2018-11-09 02:46:28 -05:00
$("#softPage").html(rdata.list);
2018-09-25 05:01:20 -04:00
$("#softPage .Pcount").css({ "position": "absolute", "left": "0" })
2018-10-07 06:25:51 -04:00
$(".task").text(rdata.data[rdata.length - 1]);
2018-10-07 05:42:46 -04:00
for (var i = 0; i < rdata.data.length; i++) {
2018-11-21 05:18:17 -05:00
var plugin = rdata.data[i];
2018-11-28 10:56:10 -05:00
var len = plugin.versions.length;
2018-09-25 05:01:20 -04:00
var version_info = '';
var version = '';
var softPath = '';
var titleClick = '';
var state = '';
var indexshow = '';
var checked = '';
2018-10-07 06:25:51 -04:00
2018-11-21 05:18:17 -05:00
checked = plugin.display ? 'checked' : '';
2018-11-20 01:01:17 -05:00
2018-11-21 05:18:17 -05:00
if (typeof plugin.versions == "string"){
version_info += plugin.versions + '|';
2018-11-04 10:37:33 -05:00
} else {
for (var j = 0; j < len; j++) {
2018-11-21 05:18:17 -05:00
version_info += plugin.versions[j] + '|';
2018-11-04 10:37:33 -05:00
}
2018-09-25 05:01:20 -04:00
}
if (version_info != '') {
version_info = version_info.substring(0, version_info.length - 1);
}
2018-11-28 10:56:10 -05:00
var handle = '<a class="btlink" onclick="addVersion(\'' + plugin.name + '\',\'' + version_info + '\',\'' + plugin.tip + '\',this,\'' + plugin.title + '\')">安装</a>';
2018-11-29 05:19:18 -05:00
if (plugin.setup == true) {
// if (plugin.tip == 'lib') {
// var mupdate = (plugin.versions[n].no == plugin.versions[n].version) ? '' : '<a class="btlink" onclick="SoftUpdate(\'' + plugin.name + '\',\'' + plugin.versions + '\',\'' + plugin.versions[n].version + '\')">更新</a> | ';
// handle = mupdate + '<a class="btlink" onclick="PluginMan(\'' + plugin.name + '\',\'' + plugin.title + '\')">' + lan.soft.setup + '</a> | <a class="btlink" onclick="UninstallVersion(\'' + plugin.name + '\',\'' + plugin.versions + '\',\'' + plugin.title + '\')">卸载</a>';
// titleClick = 'onclick="PluginMan(\'' + plugin.name + '\',\'' + plugin.title + '\')" style="cursor:pointer"';
// } else {
var mupdate = '';//(plugin.versions[n] == plugin.updates[n]) '' : '<a class="btlink" onclick="SoftUpdate(\'' + plugin.name + '\',\'' + plugin.versions[n].version + '\',\'' + plugin.updates[n] + '\')">更新</a> | ';
// if (plugin.versions[n] == '') mupdate = '';
2018-11-29 13:03:05 -05:00
handle = mupdate + '<a class="btlink" onclick="softMain(\'' + plugin.name + '\',\'' + version_info + '\')">' + lan.soft.setup + '</a> | <a class="btlink" onclick="uninstallVersion(\'' + plugin.name + '\',\'' + plugin.versions + '\',\'' + plugin.title + '\')">卸载</a>';
titleClick = 'onclick="softMain(\'' + plugin.name + '\',\'' + version_info + '\')" style="cursor:pointer"';
2018-11-29 05:19:18 -05:00
// }
softPath = '<span class="glyphicon glyphicon-folder-open" title="' + plugin.path + '" onclick="openPath(\'' + plugin.path + '\')"></span>';
2018-11-29 06:07:28 -05:00
if (plugin.coexist){
indexshow = '<div class="index-item"><input class="btswitch btswitch-ios" id="index_' + plugin.name + plugin.versions + '" type="checkbox" ' + checked + '><label class="btswitch-btn" for="index_' + plugin.name + plugin.versions + '" onclick="toIndexDisplay(\'' + plugin.name + '\',\'' + plugin.versions + '\',\'' + plugin.coexist +'\')"></label></div>';
} else {
2018-11-30 04:39:38 -05:00
indexshow = '<div class="index-item"><input class="btswitch btswitch-ios" id="index_' + plugin.name + '" type="checkbox" ' + checked + '><label class="btswitch-btn" for="index_' + plugin.name + '" onclick="toIndexDisplay(\'' + plugin.name + '\',\'' + plugin.setup_version + '\')"></label></div>';
2018-11-29 06:07:28 -05:00
}
2018-11-28 06:11:55 -05:00
if (plugin.status == true) {
2018-11-29 05:19:18 -05:00
state = '<span style="color:#20a53a" class="glyphicon glyphicon-play"></span>'
} else {
state = '<span style="color:red" class="glyphicon glyphicon-pause"></span>'
2018-11-28 06:11:55 -05:00
}
}
2018-09-25 05:01:20 -04:00
2018-11-29 05:19:18 -05:00
var isTask = plugin.task;
if (plugin.task == '-2') {
handle = '<a style="color:green;" href="javascript:task();">正在卸载...</a>';
} else if (plugin.task == '-1') {
handle = '<a style="color:green;" href="javascript:task();">正在安装...</a>';
} else if (isTask == '0') {
handle = '<a style="color:#C0C0C0;" href="javascript:task();">等待中...</a>';
}
var plugin_title = plugin.title;
if (plugin.setup && !plugin.coexist){
2018-11-30 04:39:38 -05:00
plugin_title = plugin.title + ' ' + plugin.setup_version;
2018-11-28 10:56:10 -05:00
}
2018-11-28 06:11:55 -05:00
sBody += '<tr>' +
'<td><span ' + titleClick +
'><img src="/plugins/file?name=' + plugin.name +
2018-11-28 10:56:10 -05:00
'&f=ico.png' + '">' + plugin_title + '</span></td>' +
2018-11-28 06:11:55 -05:00
'<td>' + plugin.ps + '</td>' +
'<td>' + softPath + '</td>' +
'<td>' + state + '</td>' +
'<td>' + indexshow + '</td>' +
'<td style="text-align: right;">' + handle + '</td>' +
'</tr>';
2018-09-25 05:01:20 -04:00
}
2018-11-26 00:57:06 -05:00
2018-09-25 05:01:20 -04:00
sBody += pBody;
$("#softList").html(sBody);
$(".menu-sub span").click(function() {
setCookie('softType', $(this).attr('typeid'));
$(this).addClass("on").siblings().removeClass("on");
2018-11-30 04:39:38 -05:00
getSList();
2018-09-25 05:01:20 -04:00
})
2018-11-21 05:18:17 -05:00
},'json');
2018-09-13 01:36:11 -04:00
}
2018-11-26 01:35:52 -05:00
2018-09-13 01:36:11 -04:00
//更新
2018-11-28 10:56:10 -05:00
function softUpdate(name, version, update) {
2018-09-25 05:01:20 -04:00
var msg = "<li>建议您在服务器负载闲时进行软件更新.</li>";
if (name == 'mysql') msg = "<ul style='color:red;'><li>更新数据库有风险,建议在更新前,先备份您的数据库.</li><li>如果您的是云服务器,强烈建议您在更新前做一个快照.</li><li>建议您在服务器负载闲时进行软件更新.</li></ul>";
SafeMessage('更新[' + name + ']', '更新过程可能会导致服务中断,您真的现在就将[' + name + ']更新到[' + update + ']吗?', function() {
var data = "name=" + name + "&version=" + version + "&type=0&upgrade=" + update;
var loadT = layer.msg('正在更新[' + name + '-' + version + '],请稍候...', { icon: 16, time: 0, shade: [0.3, '#000'] });
2018-10-26 01:17:19 -04:00
$.post('/plugins/install', data, function(rdata) {
2018-09-25 05:01:20 -04:00
if (rdata.status) {
GetTaskCount();
layer.msg('已添加到任务列表,请稍候...', { icon: 1 });
} else {
layer.msg('更新失败!', { icon: 2 });
}
layer.close(loadT);
});
}, msg);
2018-09-13 01:36:11 -04:00
}
2018-11-28 10:56:10 -05:00
function addVersion(name, ver, type, obj, title) {
2018-11-29 05:19:18 -05:00
var option = '';
2018-11-29 06:09:27 -05:00
var titlename = name;
2018-11-29 05:19:18 -05:00
if (ver.indexOf('|') >= 0){
2018-11-28 10:56:10 -05:00
var veropt = ver.split("|");
2018-11-29 05:19:18 -05:00
var SelectVersion = '';
2018-11-28 10:56:10 -05:00
for (var i = 0; i < veropt.length; i++) {
SelectVersion += '<option>' + name + ' ' + veropt[i] + '</option>';
}
2018-11-29 05:19:18 -05:00
option = "<select id='SelectVersion' class='bt-input-text' style='margin-left:30px'>" + SelectVersion + "</select>";
} else {
option = '<span id="SelectVersion">' + name + ' ' + ver + '</span>';
2018-09-25 05:01:20 -04:00
}
layer.open({
type: 1,
2018-11-29 05:19:18 -05:00
title: titlename + "软件安装",
2018-09-25 05:01:20 -04:00
area: '350px',
closeBtn: 2,
shadeClose: true,
content: "<div class='bt-form pd20 pb70 c6'>\
2018-11-29 05:19:18 -05:00
<div class='version line'>安装版本" + option + "</div>\
2018-09-13 01:36:11 -04:00
<div class='bt-form-submit-btn'>\
2018-11-29 05:19:18 -05:00
<button type='button' class='btn btn-danger btn-sm btn-title' onclick='layer.closeAll()'>关闭</button>\
<button type='button' id='bi-btn' class='btn btn-success btn-sm btn-title bi-btn'>提交</button>\
2018-09-13 01:36:11 -04:00
</div>\
</div>"
2018-11-26 02:54:42 -05:00
});
2018-09-25 05:01:20 -04:00
$('.fangshi input').click(function() {
$(this).attr('checked', 'checked').parent().siblings().find("input").removeAttr('checked');
});
$("#bi-btn").click(function() {
2018-11-29 05:19:18 -05:00
2018-09-25 05:01:20 -04:00
var info = $("#SelectVersion").val().toLowerCase();
2018-11-29 05:19:18 -05:00
if (info == ''){
info = $("#SelectVersion").text().toLowerCase();
}
2018-09-25 05:01:20 -04:00
var name = info.split(" ")[0];
var version = info.split(" ")[1];
var type = $('.fangshi input').prop("checked") ? '1' : '0';
var data = "name=" + name + "&version=" + version + "&type=" + type;
var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
2018-10-11 07:26:06 -04:00
$.post("/plugins/install", data, function(rdata) {
2018-09-25 05:01:20 -04:00
layer.closeAll();
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
2018-11-30 04:39:38 -05:00
getSList();
2018-09-25 05:01:20 -04:00
});
});
InstallTips();
fly("bi-btn");
}
2018-09-13 01:36:11 -04:00
//卸载软件
2018-11-29 05:19:18 -05:00
function uninstallVersion(name, version, title) {
2018-11-26 06:18:50 -05:00
layer.confirm(msgTpl('您真的要卸载[{1}-{2}]吗?', [title, version]), { icon: 3, closeBtn: 2 }, function() {
2018-09-25 05:01:20 -04:00
var data = 'name=' + name + '&version=' + version;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
2018-11-26 06:18:50 -05:00
$.post('/plugins/uninstall', data, function(rdata) {
2018-09-25 05:01:20 -04:00
layer.close(loadT)
2018-11-30 04:39:38 -05:00
getSList();
2018-09-25 05:01:20 -04:00
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
})
});
2018-09-13 01:36:11 -04:00
}
//首页显示
2018-11-29 06:07:28 -05:00
function toIndexDisplay(name, version, coexist) {
2018-09-25 05:01:20 -04:00
var status = $("#index_" + name).prop("checked") ? "0" : "1";
2018-11-29 06:07:28 -05:00
if (coexist == "true") {
2018-09-25 05:01:20 -04:00
var verinfo = version.replace(/\./, "");
status = $("#index_" + name + verinfo).prop("checked") ? "0" : "1";
}
2018-11-29 05:19:18 -05:00
2018-09-25 05:01:20 -04:00
var data = "name=" + name + "&status=" + status + "&version=" + version;
2018-11-29 05:19:18 -05:00
$.post("/plugins/set_index", data, function(rdata) {
2018-09-25 05:01:20 -04:00
if (rdata.status) {
layer.msg(rdata.msg, { icon: 1 })
}
})
2018-09-13 01:36:11 -04:00
}
//刷新缓存
2018-09-25 05:01:20 -04:00
function flush_cache() {
var loadT = layer.msg(lan.soft.get_list, { icon: 16, time: 0, shade: [0.3, '#000'] })
2018-10-26 01:17:19 -04:00
$.post('/plugins?action=flush_cache', {}, function(rdata) {
2018-09-25 05:01:20 -04:00
layer.close(loadT)
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
2018-09-13 01:36:11 -04:00
}
2018-11-30 03:58:50 -05:00
function indexListHtml(callback){
2018-11-29 13:03:05 -05:00
var loadT = layer.msg('正在获取列表...', { icon: 16, time: 0, shade: [0.3, '#000'] });
$.get('/plugins/index_list', function(rdata) {
layer.close(loadT);
2018-11-30 01:54:06 -05:00
$("#indexsoft").html('');
2018-11-29 13:03:05 -05:00
var con = '';
for (var i = 0; i < rdata.length; i++) {
var plugin = rdata[i];
var len = plugin.versions.length;
var version_info = '';
if (typeof plugin.versions == "string"){
version_info += plugin.versions + '|';
} else {
for (var j = 0; j < len; j++) {
version_info += plugin.versions[j] + '|';
}
}
if (version_info != '') {
version_info = version_info.substring(0, version_info.length - 1);
}
if (plugin.status == true) {
state = '<span style="color:#20a53a" class="glyphicon glyphicon-play"></span>'
} else {
state = '<span style="color:red" class="glyphicon glyphicon-pause"></span>'
}
var name = plugin.title + ' ' + plugin.versions + ' ';
2018-11-30 03:58:50 -05:00
var data_id = plugin.name + '-' + plugin.setup_version;
2018-11-29 13:03:05 -05:00
if (plugin.coexist){
name = plugin.title + ' ';
2018-11-30 03:58:50 -05:00
data_id = plugin.name + '-' + plugin.versions;
2018-11-29 13:03:05 -05:00
}
2018-11-30 03:58:50 -05:00
con += '<div class="col-sm-3 col-md-3 col-lg-3" data-id="' + data_id + '">\
<span class="spanmove"></span>\
<div onclick="softMain(\'' + plugin.name + '\',\'' + version_info + '\')">\
<div class="image"><img src="plugins/file?name=' + plugin.name + '&f=ico.png"></div>\
<div class="sname">' + name + state + '</div>\
</div>\
</div>';
2018-11-29 13:03:05 -05:00
}
2018-11-30 01:54:06 -05:00
2018-11-29 13:03:05 -05:00
$("#indexsoft").html(con);
//软件位置移动
var softboxlen = $("#indexsoft > div").length;
var softboxsum = 12;
var softboxcon = '';
var softboxn = softboxlen;
if (softboxlen <= softboxsum) {
for (var i = 0; i < softboxsum - softboxlen; i++) {
2018-11-30 03:58:50 -05:00
// softboxn += 1000;
softboxcon += '<div class="col-sm-3 col-md-3 col-lg-3 no-bg" data-id="' + '"></div>'
2018-11-29 13:03:05 -05:00
}
$("#indexsoft").append(softboxcon);
}
2018-11-30 03:58:50 -05:00
if (typeof callback=='function'){
callback();
}
2018-11-29 13:03:05 -05:00
},'json');
}
2018-11-30 03:58:50 -05:00
//首页软件列表
function indexSoft() {
indexListHtml(function(){
$("#indexsoft").dragsort({ dragSelector: ".spanmove", dragBetween: true, dragEnd: saveOrder, placeHolderTemplate: "<div class='col-sm-3 col-md-3 col-lg-3 dashed-border'></div>" });
});
function saveOrder() {
var data = $("#indexsoft > div").map(function() { return $(this).attr("data-id"); }).get();
tmp = [];
for(i in data){
console.log(data[i]);
if (data[i] != ''){
tmp.push($.trim(data[i]));
}
}
var ssort = tmp.join("|");
console.log(ssort);
$("input[name=list1SortOrder]").val(ssort);
$.post("/plugins/index_sort", 'ssort=' + ssort, function(rdata) {
if (!rdata.status){
showMsg('设置失败:'+ rdata.msg, function(){
indexListHtml();
}, { icon: 16, time: 0, shade: [0.3, '#000'] });
}
},'json');
};
}
2018-11-22 04:08:26 -05:00
// $(function() {
// if (window.document.location.pathname == '/soft/') {
2018-11-30 04:39:38 -05:00
// setInterval(function() { getSList(true); }, 5000);
2018-11-22 04:08:26 -05:00
// }
// });