up advanced add ipkinstall1.8

This commit is contained in:
sirpdboy 2021-04-23 15:23:39 +08:00
parent a6ffcb3e35
commit c12e272458
5 changed files with 88 additions and 10 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=luci-app-advanced
PKG_VERSION:=1.8
PKG_VERSION:=1.9
PKG_RELEASE:=3
define Package/$(PKG_NAME)
SECTION:=luci

View File

@ -2,7 +2,7 @@
margin-top: 1rem;
}
.fb-container .cbi-button {
height: 2rem;
height: 1.9rem;
}
.fb-container .cbi-input-text {
margin-bottom: 1rem;

View File

@ -17,7 +17,7 @@ String.prototype.replaceAll = function(search, replacement) {
}
};
function removePath(filename, isdir) {
var c = confirm('确认删除 ' + filename + ' ?');
var c = confirm('你确定要删除 ' + filename + ' 吗?');
if (c) {
iwxhr.get('/cgi-bin/luci/admin/system/filebrowser_delete',
{
@ -31,8 +31,47 @@ String.prototype.replaceAll = function(search, replacement) {
});
}
}
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/system/filebrowser_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);
var newname = prompt('请输入新的文件名:', filename);
if (newname) {
newname = newname.trim();
if (newname != filename) {
@ -84,6 +123,10 @@ String.prototype.replaceAll = function(search, replacement) {
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']);
}
@ -115,7 +158,7 @@ String.prototype.replaceAll = function(search, replacement) {
function refresh_list(filenames, path) {
var listHtml = '<table class="cbi-section-table"><tbody>';
if (path !== '/') {
listHtml += '<tr><td class="parent-icon" colspan="6"><strong>..</strong></td></tr>';
listHtml += '<tr class="cbi-section-table-row cbi-rowstyle-2"><td class="parent-icon" colspan="6"><strong>..</strong></td></tr>';
}
if (filenames) {
for (var i = 0; i < filenames.length; i++) {
@ -132,6 +175,14 @@ String.prototype.replaceAll = function(search, replacement) {
owner: f[3],
icon: (f[1][0] === 'd') ? "folder-icon" : (isLink ? "link-icon" : "file-icon")
};
var install_btn = '<button class="cbi-button cbi-button-install" style="visibility: hidden;">安装</button>';
var index= o.filename.lastIndexOf(".");
var ext = o.filename.substr(index+1);
if (ext === 'ipk') {
install_btn = '<button class="cbi-button cbi-button-install">安装</button>';
}
listHtml += '<tr class="cbi-section-table-row cbi-rowstyle-' + (1 + i%2)
+ '" data-filename="' + o.filename + '" data-isdir="' + Number(f[1][0] === 'd' || f[1][0] === 'z') + '"'
+ ((f[1][0] === 'z' || f[1][0] === 'l') ? (' data-linktarget="' + f[9].split(' -> ')[1]) : '')
@ -143,8 +194,11 @@ String.prototype.replaceAll = function(search, replacement) {
+ '<td class="cbi-value-field cbi-value-date">'+o.date+'</td>'
+ '<td class="cbi-value-field cbi-value-size">'+o.size+'</td>'
+ '<td class="cbi-value-field cbi-value-perm">'+o.perms+'</td>'
+ '<td class="cbi-section-table-cell"><button class="cbi-button cbi-button-edit">重命名</button>\
<button class="cbi-button cbi-button-remove">删除</button></td>'
+ '<td class="cbi-section-table-cell">\
<button class="cbi-button cbi-button-edit">重命名</button>\
<button class="cbi-button cbi-button-remove">删除</button>'
+ install_btn
+ '</td>'
+ '</tr>';
}
}
@ -209,7 +263,7 @@ String.prototype.replaceAll = function(search, replacement) {
uploadinput.value = '';
}
else {
alert('上传失败');
alert('上传失败,请稍后再试...');
}
};
xhr.send(formData);

View File

@ -19,6 +19,7 @@ function index()
page.leaf = true
page = entry({"admin", "system", "filebrowser_upload"}, call("filebrowser_upload"), nil)
page = entry({"admin", "system", "filebrowser_install"}, call("fileassistant_install"), nil)
page.leaf = true
end
@ -80,7 +81,30 @@ function filebrowser_rename()
list_response(nixio.fs.dirname(filepath), success)
end
function filebrowser_upload()
function fileassistant_install()
local filepath = luci.http.formvalue("filepath")
local isdir = luci.http.formvalue("isdir")
local ext = filepath:match(".+%.(%w+)$")
filepath = filepath:gsub("<>", "/")
filepath = filepath:gsub(" ", "\ ")
local success
if isdir == "1" then
success = false
elseif ext == "ipk" then
success = installIPK(filepath)
else
success = false
end
list_response(nixio.fs.dirname(filepath), success)
end
function installIPK(filepath)
luci.sys.exec('opkg --force-depends install "'..filepath..'"')
luci.sys.exec('rm -rf /tmp/luci-*')
return true;
end
function fileassistant_upload()
local filecontent = luci.http.formvalue("upload-file")
local filename = luci.http.formvalue("upload-filename")
local uploaddir = luci.http.formvalue("upload-dir")

View File

@ -5,7 +5,7 @@
<fieldset class="cbi-section fb-container">
<input id="current-path" type="text" class="current-path cbi-input-text" value="/"/>
<div class="panel-container">
<div class="panel-title">文件列表:</div>
<div class="panel-title">文件列表</div>
<button id="upload-toggle" class="upload-toggle cbi-button cbi-button-edit">上传</button>
</div>
<div class="upload-container" id="upload-container">