define(['jquery', 'bootstrap', 'backend', 'form', 'template', 'loading'], function($, undefined, Backend, Form, Template, Loading) { var Controller = { index: function() { Controller.api.events.toolbar(); Controller.init.table(); }, add: function() { Controller.init.selectpicker(); Controller.api.form(); }, edit: function() { Controller.init.selectpicker(true); Controller.api.form(); }, init: { selectpicker: function(disabled = false) { $('#sType').on('loaded.bs.select , changed.bs.select', function(e, clickedIndex, isSelected, previousValue) { var id = $('#id').val(); var sType = $(this).selectpicker('val'); $('#sTypeDom').hide(); $('.rememory').hide(); $('.urladdress').hide(); $('.sbody').hide(); switch (sType) { case 'toShell': $('.sbody').show().find('textarea').attr('placeholder', ''); $('#sBodyTitle').html('脚本内容:'); break; case 'site': Controller.init.toBackup(sType); $('.sbody').show().find('textarea').attr('placeholder', '每行一条规则,目录不能以/结尾,示例:\ndata/config.php\nstatic/upload\n *.log\n').text(); $('#sBodyTitle').html('排除规则:'); break; case 'database': Controller.init.toBackup(sType); break; case 'logs': Controller.init.toBackup(sType); break; case 'path': Controller.init.toBackup(sType); $('.sbody').show().find('textarea').attr('placeholder', '每行一条规则,目录不能以/结尾,示例:\ndata/config.php\nstatic/upload\n *.log\n').text(); $('#sBodyTitle').html('排除规则:'); break; case 'rememory': $('.rememory').show(); break; case 'toUrl': $('.urladdress').show(); break; case 'syncTime': $(this).selectpicker('val', 'toShell'); $(this).selectpicker('refresh'); $('.sbody').show().find('textarea').text('echo "|-正在尝试从0.pool.bt.cn同步时间..";\n\ ntpdate -u 0.pool.bt.cn\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从1.pool.bt.cn同步时间..";\n\ ntpdate -u 1.pool.bt.cn\n\ fi\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从0.asia.pool.ntp.org同步时间..";\n\ ntpdate -u 0.asia.pool.ntp.org\n\ fi\n\ if [ $? = 1 ];then\n\ echo "|-正在尝试从www.bt.cn同步时间..";\n\ getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time)\n\ if [ "${getBtTime}" ];then \n\ date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")"\n\ fi\n\ fi\n\ echo "|-正在尝试将当前系统时间写入硬件..";\n\ hwclock -w\n\ date\n\ echo "|-时间同步完成!";'); break; default: break; } if (disabled) { $(this).prop('disabled', true); $(this).selectpicker('refresh'); } }); $('#type').on('loaded.bs.select , changed.bs.select', function(e, clickedIndex, isSelected, previousValue) { var type = $(this).selectpicker('val'); $('#whereDom').html(Template(type + "-tpl", {})); if (type == 'week') $('#whereDom').find('.selectpicker').selectpicker('refresh'); }); }, toBackup: function(sType = '') { $.ajax({ type: "POST", url: "btpanel/ajax/getDataList", data: { type: sType == 'database' ? 'databases' : 'sites' }, dataType: "JSON", success: function(res) { res.data.unshift({ name: '所有', ps: 'ALL' }); res.orderOpt.unshift({ name: '服务器磁盘', value: 'localhost' }); res.title = Config.crontab['sTypeArray'][sType]; var html; if (sType == 'path') { html = Template("sTypePathTpl", res); } else { html = Template("sTypeSiteTpl", res); } $('#sTypeDom').html(html); $('#sTypeDom').show(); $('#sTypeDom').find('.selectpicker').selectpicker('refresh'); } }); }, table: function() { $('table').loading(); $.ajax({ type: "POST", url: "btpanel/ajax/getCrontab", dataType: "JSON", success: function(rdata) { if (rdata == []) { $('table').loading('hide'); var html = Template("
' + (rdata.msg == '' ? '当前日志为空' : rdata.msg) + '', success: function() { var scrollHeight = $('#editor').prop("scrollHeight"); $('#editor').animate({ scrollTop: scrollHeight }, 200); } }); }); }) }, setTaskStatus: function() { $('.set_task_status').off('click').on('click', function() { var id = $(this).data('id'); var status = $(this).children('span').data('status'); var title = $(this).parent().siblings('td[data-field="name"]').html(); var confirm = Layer.confirm(status == '0' ? '计划任务暂停后将无法继续运行,您真的要停用【' + title + '】吗?' : '该计划任务已停用,是否要启用【' + title + '】', { title: '提示', icon: 3 }, function(index) { if (index > 0) { var loadT = Layer.msg('正在设置状态,请稍后...', { icon: 16, time: 0, shade: [0.3, '#000'] }); $.post('btpanel/ajax/setCronStatus', { id: id }, function(rdata) { Layer.closeAll(); Layer.close(confirm); Layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); if (rdata.status) Controller.init.table(); }); } }); }) } }, form: function() { Form.api.bindevent($("form[role=form]"), null, null, function(success, error) { var form = { id: '', name: '', type: '', where1: '', hour: '', minute: '', week: '', sType: '', sBody: '', sName: '', backupTo: '', save: '', urladdress: '', } $('input[class="form-control"],textarea[class="form-control"],select[class="form-control selectpicker"]').each(function(i, element) { element == this var name = $(element).attr('name'); var value = $(element).val(); if (form.hasOwnProperty(name)) { form[name] = value; } }); $.ajax({ type: "POST", url: $(this).attr('action'), data: form, dataType: "JSON", success: function(ret) { var index = parent.Layer.getFrameIndex(window.name); parent.Layer.close(index); parent.Layer.msg(ret.msg, { icon: ret.status ? 1 : 2 }); Fast.api.close(ret) } }); return false; }); } } }; return Controller; });