function isURL(str_url){ var strRegex = '^(https|http|ftp|rtsp|mms)?://.+'; var re=new RegExp(strRegex); if (re.test(str_url)){ return (true); }else{ return (false); } } var num = 0; //查看任务日志 function getLogs(id){ layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); var data='&id='+id; $.post('/crontab/logs', data, function(rdata){ layer.closeAll(); if(!rdata.status) { layer.msg(rdata.msg,{icon:2, time:2000}); return; }; layer.open({ type:1, title:lan.crontab.task_log_title, area: ['60%','500px'], shadeClose:false, closeBtn:2, content:'
' +'
'
					+'
' +'' +'' +'
' +'
' }); setTimeout(function(){ $("#crontab-log").text(rdata.msg); },200); },'json'); } function getCronData(){ var load = layer.msg(lan.public.the,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab/list', '', function(rdata){ layer.close(load); var cbody = ""; if(rdata == ""){ cbody=""+lan.crontab.task_empty+""; }else{ for(var i=0;i\ "+rdata.data[i].name+"\ "+status+"\ "+rdata.data[i].type+"\ "+rdata.data[i].cycle+"\ -\ --\ "+rdata.data[i].addtime+"\ \ 执行 | \ 编辑 | \ 日志 | \ 删除\ \ "; } } $('#cronbody').html(cbody); },'json'); } //执行任务脚本 function startTask(id){ layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab/start_task',data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); },'json'); } //清空日志 function closeLogs(id){ layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab/del_logs',data,function(rdata){ layer.closeAll(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); },'json'); } //删除 function planDel(id,name){ safeMessage(lan.get('del',[name]),'您确定要删除该任务吗?',function(){ var load = layer.msg('正在处理,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); var data='id='+id; $.post('/crontab/del',data,function(rdata){ layer.close(load); showMsg(rdata.msg, function(){ getCronData(); },{icon:rdata.status?1:2,time:2000}); },'json'); }); } //批量删除 function allDeleteCron(){ var checkList = $("input[name=id]"); var dataList = new Array(); for(var i=0;i"+lan.get('del_all_task',[dataList.length])+"",function(){ layer.closeAll(); syncDeleteCron(dataList,0,''); }); } //模拟同步开始批量删除数据库 function syncDeleteCron(dataList,successCount,errorMsg){ if(dataList.length < 1) { layer.msg(lan.get('del_all_task_ok',[successCount]),{icon:1}); return; } var loadT = layer.msg(lan.get('del_all_task_the',[dataList[0].name]),{icon:16,time:0,shade: [0.3, '#000']}); $.ajax({ type:'POST', url:'/crontab?action=DelCrontab', data:'id='+dataList[0].id+'&name='+dataList[0].name, async: true, success:function(frdata){ layer.close(loadT); if(frdata.status){ successCount++; $("input[title='"+dataList[0].name+"']").parents("tr").remove(); }else{ if(!errorMsg){ errorMsg = '

'+lan.crontab.del_task_err+'

'; } errorMsg += '
  • '+dataList[0].name+' -> '+frdata.msg+'
  • ' } dataList.splice(0,1); syncDeleteCron(dataList,successCount,errorMsg); } }); } function isURL(str_url){ var strRegex = '^(https|http|ftp|rtsp|mms)?://.+'; var re=new RegExp(strRegex); if (re.test(str_url)){ return (true); }else{ return (false); } } //提交 function planAdd(){ var name = $(".planname input[name='name']").val(); if(name == ''){ $(".planname input[name='name']").focus(); layer.msg('任务名称不能为空!',{icon:2}); return; } $("#set-Config input[name='name']").val(name); var type = $(".plancycle").find("b").attr("val"); $("#set-Config input[name='type']").val(type); var where1 = $("#ptime input[name='where1']").val(); var is1; var is2 = 1; switch(type){ case 'day-n': is1=31; break; case 'hour-n': is1=23; break; case 'minute-n': is1=59; break; case 'month': is1=31; break; } if(where1 > is1 || where1 < is2){ $("#ptime input[name='where1']").focus(); layer.msg('表单不合法,请重新输入!',{icon:2}); return; } $("#set-Config input[name='where1']").val(where1); var hour = $("#ptime input[name='hour']").val(); if(hour > 23 || hour < 0){ $("#ptime input[name='hour']").focus(); layer.msg('小时值不合法!',{icon:2}); return; } $("#set-Config input[name='hour']").val(hour); var minute = $("#ptime input[name='minute']").val(); if(minute > 59 || minute < 0){ $("#ptime input[name='minute']").focus(); layer.msg('分钟值不合法!',{icon:2}); return; } $("#set-Config input[name='minute']").val(minute); var save = $("#save").val(); if(save < 0){ layer.msg('不能有负数!',{icon:2}); return; } $("#set-Config input[name='save']").val(save); $("#set-Config input[name='week']").val($(".planweek").find("b").attr("val")); var sType = $(".planjs").find("b").attr("val"); var sBody = encodeURIComponent($("#implement textarea[name='sBody']").val()); if(sType == 'toFile'){ if($("#viewfile").val() == ''){ layer.msg('请选择脚本文件!',{icon:2}); return; } } else { if(sBody == ''){ $("#implement textarea[name='sBody']").focus(); layer.msg('脚本代码不能为空!',{icon:2}); return; } } var urladdress = $("#urladdress").val(); if(sType == 'toUrl'){ if(!isURL(urladdress)){ layer.msg('URL地址不正确!',{icon:2}); $("implement textarea[name='urladdress']").focus(); return; } } // urladdress = encodeURIComponent(urladdress); $("#set-Config input[name='urladdress']").val(urladdress); $("#set-Config input[name='sType']").val(sType); $("#set-Config textarea[name='sBody']").val(decodeURIComponent(sBody)); if(sType == 'site' || sType == 'database'){ var backupTo = $(".planBackupTo").find("b").attr("val"); $("#backupTo").val(backupTo); } var sName = $("#sName").attr("val"); if(sName == 'backupAll'){ var alist = $("ul[aria-labelledby='backdata'] li a"); var dataList = new Array(); for(var i=1;i 59){ if(hour >= 23) hour = 0; $("#set-Config input[name='hour']").val(hour+1); minute = 5; } $("#set-Config input[name='minute']").val(minute); $("#set-Config input[name='name']").val(sTitle + '['+dataList[0]+']'); $("#set-Config input[name='sName']").val(dataList[0]); var pdata = $("#set-Config").serialize() + '&sBody=&urladdress='; $.ajax({ type:'POST', url:'/crontab/add', data:pdata, async: true, success:function(frdata){ layer.close(loadT); if(frdata.status){ successCount++; getCronData(); }else{ if(!errorMsg){ errorMsg = '

    '+lan.crontab.backup_all_err+'

    '; } errorMsg += '
  • '+dataList[0]+' -> '+frdata.msg+'
  • ' } dataList.splice(0,1); allAddCrontab(dataList,successCount,errorMsg); } }); } $(".dropdown ul li a").click(function(){ var txt = $(this).text(); var type = $(this).attr("value"); $(this).parents(".dropdown").find("button b").text(txt).attr("val",type); switch(type){ case 'day': closeOpt(); toHour(); toMinute(); break; case 'day-n': closeOpt(); toWhere1('天'); toHour(); toMinute(); break; case 'hour': closeOpt(); toMinute(); break; case 'hour-n': closeOpt(); toWhere1('小时'); toMinute(); break; case 'minute-n': closeOpt(); toWhere1('分钟'); break; case 'week': closeOpt(); toWeek(); toHour(); toMinute(); break; case 'month': closeOpt(); toWhere1('日'); toHour(); toMinute(); break; case 'toFile': toFile(); break; case 'toShell': toShell(); $(".controls").html('脚本内容'); break; case 'rememory': rememory(); $(".controls").html('提示'); break; case 'site': toBackup('sites'); $(".controls").html('备份网站'); break; case 'database': toBackup('databases'); $(".controls").html('备份数据库'); break; case 'logs': toBackup('logs'); $(".controls").html('切割网站'); break; case 'toUrl': toUrl(); $(".controls").html('URL地址'); break; } }) //备份 function toBackup(type){ var sMsg = ""; switch(type){ case 'sites': sMsg = '备份网站'; sType = "sites"; break; case 'databases': sMsg = '备份数据库'; sType = "databases"; break; case 'logs': sMsg = '切割日志'; sType = "sites"; break; } var data='type='+sType $.post('/crontab/get_data_list',data,function(rdata){ $(".planname input[name='name']").attr('readonly','true').css({"background-color":"#f6f6f6","color":"#666"}); var sOpt = ""; if(rdata.data.length == 0){ layer.msg(lan.public.list_empty,{icon:2}) return } for(var i=0;i'+rdata.data[i].name+'['+rdata.data[i].ps+']'; } var orderOpt = '' for (var i=0;i'+rdata.orderOpt[i].name+'' } var sBody = '\
    备份到
    \ \
    保留最新
    \ \ \
    '; $("#implement").html(sBody); getselectname(); $(".dropdown ul li a").click(function(){ var sName = $("#sName").attr("val"); if(!sName) return; $(".planname input[name='name']").val(sMsg+'['+sName+']'); }); },'json'); } // 编辑计划任务 function editTaskInfo(id){ layer.msg('正在获取,请稍候...',{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab/get_crond_find',{id:id},function(rdata){ layer.closeAll(); // console.log('init:', rdata); var sTypeName = '',sTypeDom = '',cycleName = '',cycleDom = '',weekName = '',weekDom = '',sNameName ='',sNameDom = '',backupsName = '',backupsDom =''; obj = { from:{ id:rdata.id, name: rdata.name, type: rdata['type'], stype: rdata.stype, where1: rdata.where1, hour: rdata.where_hour, minute: rdata.where_minute, week: rdata.where1, sbody: rdata.sbody, sname: rdata.sname, backup_to: rdata.backup_to, save: rdata.save, urladdress: rdata.urladdress, }, sTypeArray:[['toShell','Shell脚本'],['site','备份网站'],['database','备份数据库'],['logs','日志切割'],['path','备份目录'],['rememory','释放内存'],['toUrl','访问URL']], cycleArray:[['day','每天'],['day-n','N天'],['hour','每小时'],['hour-n','N小时'],['minute-n','N分钟'],['week','每星期'],['month','每月']], weekArray:[[1,'周一'],[2,'周二'],[3,'周三'],[4,'周四'],[5,'周五'],[6,'周六'],[7,'周日']], sNameArray:[], backupsArray:[], create:function(callback){ for(var i = 0; i '+ obj['sTypeArray'][i][1] +''; } for(var i = 0; i '+ obj['cycleArray'][i][1] +''; } for(var i = 0; i '+ obj['weekArray'][i][1] +''; } if(obj.from.stype == 'site' || obj.from.stype == 'database' || obj.from.stype == 'path' || obj.from.stype == 'logs'){ $.post('/crontab/get_data_list',{type:obj.from.stype == 'databases'?'database':'sites'},function(rdata){ obj.sNameArray = rdata.data; obj.sNameArray.unshift({name:'ALL',ps:'所有'}); obj.backupsArray = rdata.orderOpt; obj.backupsArray.unshift({name:'服务器磁盘',value:'localhost'}); for(var i = 0; i '+ obj['sNameArray'][i]['ps'] +''; } for(var i = 0; i '+ obj['backupsArray'][i]['name'] +''; } callback(); },'json'); }else{ callback(); } } }; obj.create(function(){ layer.open({ type:1, title:'编辑计划任务-['+rdata.name+']', area: ['850px','450px'], skin:'layer-create-content', shadeClose:false, closeBtn:2, content:'
    \
    \ 任务类型\ \
    \
    \ 任务名称\
    \
    \
    \ 执行周期\ \
    \ \
    \
    \
    \
    \
    \ \
    \ 脚本内容\
    \
    \
    \ 提示\
    释放PHP、MYSQL、PURE-FTPD、APACHE、NGINX的内存占用,建议在每天半夜执行!
    \
    \
    \ URL地址\
    \
    \
    \
    保存编辑
    \
    \
    ' }); setTimeout(function(){ if(obj.from.stype == 'toShell'){ $('.site_list').hide(); }else if(obj.from.stype == 'rememory'){ $('.site_list').hide(); }else if( obj.from.stype == 'toUrl'){ $('.site_list').hide(); }else{ $('.site_list').show(); } obj.from.minute = $('.minute_create').val(); $('.sName_create').blur(function () { obj.from.name = $(this).val(); }); $('.where1_create').blur(function () { obj.from.where1 = $(this).val(); }); $('.hour_create').blur(function () { obj.from.hour = $(this).val(); }); $('.minute_create').blur(function () { obj.from.minute = $(this).val(); }); $('.save_create').blur(function () { obj.from.save = $(this).val(); }); $('.sBody_create').blur(function () { obj.from.sbody = $(this).val(); }); $('.url_create').blur(function () { obj.from.urladdress = $(this).val(); }); $('[aria-labelledby="cycle"] a').unbind().click(function () { $('.cycle_btn').find('b').attr('val',$(this).attr('value')).html($(this).html()); var type = $(this).attr('value'); switch(type){ case 'day': $('.week_btn').hide(); $('.where1_input').hide(); $('.hour_input').show().find('input').val('1'); $('.minute_input').show().find('input').val('30'); obj.from.week = ''; obj.from.type = ''; obj.from.hour = 1; obj.from.minute = 30; break; case 'day-n': $('.week_btn').hide(); $('.where1_input').show().find('input').val('1'); $('.hour_input').show().find('input').val('1'); $('.minute_input').show().find('input').val('30'); obj.from.week = ''; obj.from.where1 = 1; obj.from.hour = 1; obj.from.minute = 30; break; case 'hour': $('.week_btn').hide(); $('.where1_input').hide(); $('.hour_input').hide(); $('.minute_input').show().find('input').val('30'); obj.from.week = ''; obj.from.where1 = ''; obj.from.hour = ''; obj.from.minute = 30; break; case 'hour-n': $('.week_btn').hide(); $('.where1_input').hide(); $('.hour_input').show().find('input').val('1'); $('.minute_input').show().find('input').val('30'); obj.from.week = ''; obj.from.where1 = ''; obj.from.hour = 1; obj.from.minute = 30; break; case 'minute-n': $('.week_btn').hide(); $('.where1_input').hide(); $('.hour_input').hide(); $('.minute_input').show(); obj.from.week = ''; obj.from.where1 = ''; obj.from.hour = ''; obj.from.minute = 30; console.log(obj.from); break; case 'week': $('.week_btn').show(); $('.where1_input').hide(); $('.hour_input').show(); $('.minute_input').show(); obj.from.week = 1; obj.from.where1 = ''; obj.from.hour = 1; obj.from.minute = 30; break; case 'month': $('.week_btn').hide(); $('.where1_input').show(); $('.hour_input').show(); $('.minute_input').show(); obj.from.week = ''; obj.from.where1 = 1; obj.from.hour = 1; obj.from.minute = 30; break; } obj.from.type = $(this).attr('value'); }); $('[aria-labelledby="week"] a').unbind().click(function () { $('.week_btn').find('b').attr('val',$(this).attr('value')).html($(this).html()); obj.from.week = $(this).attr('value'); }); $('[aria-labelledby="backupTo"] a').unbind().click(function () { $('.backup_btn').find('b').attr('val',$(this).attr('value')).html($(this).html()); obj.from.backup_to = $(this).attr('value'); }); $('.plan-submits').unbind().click(function(){ if(obj.from.type == 'hour-n'){ obj.from.where1 = obj.from.hour; obj.from.hour = ''; } else if(obj.from.type == 'minute-n') { obj.from.where1 = obj.from.minute; obj.from.minute = ''; } layer.msg('正在保存编辑内容,请稍后...',{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab/modify_crond',obj.from,function(rdata){ layer.closeAll(); getCronData(); layer.msg(rdata.msg,{icon:rdata.status?1:2}); },'json'); }); },100); }); },'json'); } //下拉菜单名称 function getselectname(){ $(".dropdown ul li a").click(function(){ var txt = $(this).text(); var type = $(this).attr("value"); $(this).parents(".dropdown").find("button b").text(txt).attr("val",type); }); } //清理 function closeOpt(){ $("#ptime").html(''); } //星期 function toWeek(){ var mBody = ''; $("#ptime").html(mBody); getselectname(); } //指定1 function toWhere1(ix){ var mBody ='
    \ \ '+ix+'\
    '; $("#ptime").append(mBody); } //小时 function toHour(){ var mBody = '
    \ \ 小时\
    '; $("#ptime").append(mBody); } //分钟 function toMinute(){ var mBody = '
    \ \ 分钟\
    '; $("#ptime").append(mBody); } //从文件 function toFile(){ var tBody = '\ '; $("#implement").html(tBody); $(".planname input[name='name']").removeAttr('readonly style').val(""); } //从脚本 function toShell(){ var tBody = ""; $("#implement").html(tBody); $(".planname input[name='name']").removeAttr('readonly style').val(""); } //从脚本 function toUrl(){ var tBody = ""; $("#implement").html(tBody); $(".planname input[name='name']").removeAttr('readonly style').val(""); } //释放内存 function rememory(){ $(".planname input[name='name']").removeAttr('readonly style').val(""); $(".planname input[name='name']").val(lan.crontab.mem); $("#implement").html(lan.crontab.mem_ps); return; } //上传 function fileupload(){ $("#sFile").change(function(){ $("#viewfile").val($("#sFile").val()); }); $("#sFile").click(); }