String.prototype.replaceAll = function(search, replacement) { var target = this; return target.replace(new RegExp(search, 'g'), replacement); }; (function () { var iwxhr = new XHR(); var listElem = document.getElementById("list-content"); listElem.onclick = handleClick; var currentPath; var pathElem = document.getElementById("current-path"); pathElem.onblur = function () { update_list(this.value.trim()); }; pathElem.onkeyup = function (evt) { if (evt.keyCode == 13) { this.blur(); } }; function removePath(filename, isdir) { var c = confirm('你确定要删除 ' + filename + ' 吗?'); if (c) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/delete', { path: concatPath(currentPath, filename), isdir: isdir }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } }); } } function installPath(filename, isdir) { if (isdir === "1") { alert('这是一个目录,请选择 ipk 文件进行安装!'); return; } var isipk = isIPK(filename); if (isipk === 0) { alert('只允许安装 ipk 格式的文件!'); return; } var c = confirm('你确定要安装 ' + filename + ' 吗?'); if (c) { iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/install', { filepath: concatPath(currentPath, filename), isdir: isdir }, function (x, res) { if (res.ec === 0) { location.reload(); alert('安装成功!'); } else { alert('安装失败,请检查文件格式!'); } }); } } function isIPK(filename) { var index= filename.lastIndexOf("."); var ext = filename.substr(index+1); if (ext === 'ipk') { return 1; } else { return 0; } } function renamePath(filename) { var newname = prompt('请输入新的文件名:', filename); if (newname) { newname = newname.trim(); if (newname != filename) { var newpath = concatPath(currentPath, newname); iwxhr.get('/cgi-bin/luci/admin/nas/fileassistant/rename', { filepath: concatPath(currentPath, filename), newpath: newpath }, function (x, res) { if (res.ec === 0) { refresh_list(res.data, currentPath); } } ); } } } function openpath(filename, dirname) { dirname = dirname || currentPath; window.open('/cgi-bin/luci/admin/nas/fileassistant/open?path=' + encodeURIComponent(dirname) + '&filename=' + encodeURIComponent(filename)); } function getFileElem(elem) { if (elem.className.indexOf('-icon') > -1) { return elem; } else if (elem.parentNode.className.indexOf('-icon') > -1) { return elem.parentNode; } } function concatPath(path, filename) { if (path === '/') { return path + filename; } else { return path.replace(/\/$/, '') + '/' + filename; } } function handleClick(evt) { var targetElem = evt.target; var infoElem; if (targetElem.className.indexOf('cbi-button-remove') > -1) { infoElem = targetElem.parentNode.parentNode; removePath(infoElem.dataset['filename'] , infoElem.dataset['isdir']) } else if (targetElem.className.indexOf('cbi-button-install') > -1) { infoElem = targetElem.parentNode.parentNode; installPath(infoElem.dataset['filename'] , infoElem.dataset['isdir']) } else if (targetElem.className.indexOf('cbi-button-edit') > -1) { renamePath(targetElem.parentNode.parentNode.dataset['filename']); } else if (targetElem = getFileElem(targetElem)) { if (targetElem.className.indexOf('parent-icon') > -1) { update_list(currentPath.replace(/\/[^/]+($|\/$)/, '')); } else if (targetElem.className.indexOf('file-icon') > -1) { openpath(targetElem.parentNode.dataset['filename']); } else if (targetElem.className.indexOf('link-icon') > -1) { infoElem = targetElem.parentNode; var filepath = infoElem.dataset['linktarget']; if (filepath) { if (infoElem.dataset['isdir'] === "1") { update_list(filepath); } else { var lastSlash = filepath.lastIndexOf('/'); openpath(filepath.substring(lastSlash + 1), filepath.substring(0, lastSlash)); } } } else if (targetElem.className.indexOf('folder-icon') > -1) { update_list(concatPath(currentPath, targetElem.parentNode.dataset['filename'])) } } } function refresh_list(filenames, path) { var listHtml = '
.. | |||||
' + '' + o.displayname + '' + ' | ' + ''+o.owner+' | ' + ''+o.date+' | ' + ''+o.size+' | ' + ''+o.perms+' | ' + '\ \ ' + install_btn + ' | ' + '