From b8b63662eaa2bd8a33e691b16a6d3c3c5f753f05 Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Mon, 9 Apr 2018 22:04:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E7=BA=BF=E4=B8=8B=E8=BD=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0URL=E4=BA=A4=E4=BA=92=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../index/controller/RemoteDownload.php | 3 +- application/index/model/Aria2.php | 7 +++ application/index/view/home/home.html | 2 + static/js/angular-filemanager.min.js | 49 +++++++++++++++++-- static/js/home.js | 3 ++ 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/application/index/controller/RemoteDownload.php b/application/index/controller/RemoteDownload.php index 1259d512..98225cac 100644 --- a/application/index/controller/RemoteDownload.php +++ b/application/index/controller/RemoteDownload.php @@ -54,8 +54,9 @@ class RemoteDownload extends Controller{ $downloadStart = $aria2->addUrl(input("post.url")); if($aria2->reqStatus){ $this->insertRecord($aria2,input("post.url")); + return json(["result"=>['success'=>true,'error'=>null]]); }else{ - return json(['error'=>1,'message'=>$aria2->reqMsg]); + return json(["result"=>['success'=>false,'error'=>$aria2->reqMsg]]); } } diff --git a/application/index/model/Aria2.php b/application/index/model/Aria2.php index b6c44481..508bc919 100644 --- a/application/index/model/Aria2.php +++ b/application/index/model/Aria2.php @@ -129,6 +129,13 @@ class Aria2 extends Model{ # code... break; } + if(($respondData["result"]["files"][$downloadInfo["file_index"]]["completedLength"] == $respondData["result"]["files"][$downloadInfo["file_index"]]["length"]) && $respondData["result"]["status"]=="active"){ + $this->setComplete($respondData["result"],$downloadInfo); + Db::name("download")->where("id",$id) + ->update([ + "status" => "complete", + ]); + } }else{ $this->reqStatus = 0; $this->reqMsg = "空间容量不足"; diff --git a/application/index/view/home/home.html b/application/index/view/home/home.html index 593b101f..76332275 100644 --- a/application/index/view/home/home.html +++ b/application/index/view/home/home.html @@ -28,6 +28,8 @@ allowSource : "{$policyData.origin_link}", upUrl : "{$policyData.server}", allowShare:"{$groupData.allow_share}", + allowRemoteDownload:"{:explode(",",$groupData.aria2)[0]}", + allowTorrentDownload:"{:explode(",",$groupData.aria2)[1]}", }; diff --git a/static/js/angular-filemanager.min.js b/static/js/angular-filemanager.min.js index 25542c33..bb1c720d 100644 --- a/static/js/angular-filemanager.min.js +++ b/static/js/angular-filemanager.min.js @@ -323,6 +323,17 @@ function(e, r) { e.modal("move", !0) }) }, + e.startRemoteDownload = function(){ + if(e.temp['url'] == ""){ + return e.apiMiddleware.apiHandler.error = a.instant("下载URL不能为空"); + }else{ + e.apiMiddleware.apiHandler.error = !1; + return void e.apiMiddleware.startRemoteDownload(e.temp['url'],n.selectedModalPath).then(function() { + e.modal("remoteDownload", !0); + toastr["success"]("离线下载任务已创建"); + }) + } + } e.rename = function() { var r = e.singleSelection(), n = r.tempModel.name, @@ -456,6 +467,11 @@ function(e) { i = "/" + n.join("/"); return e.singleSelection() && !e.singleSelection().isFolder() && (i += "/" + e.singleSelection().tempModel.name), i.replace(/\/\//, "/") + }, + r.getSelectedPathForDownload = function() { + var path = r.selectedModalPath.filter(Boolean); + var result = '/' + path.join('/'); + return result.replace(/\/\//, '/'); } } ]) @@ -739,7 +755,7 @@ function(e) { e.module("FileManagerApp").provider("fileManagerConfig", function() { var r = { - appName: "angular-filemanager v1.5", + appName: "Cloudreve FileManager", defaultLang: "zh_cn", listUrl: "/File/ListFile", previewUrl:"/File/Preview", @@ -757,6 +773,7 @@ function(e) { extractUrl: "bridges/php/handler.php", permissionsUrl: "bridges/php/handler.php", sourceUrl:"/File/gerSource", + remoteDownloadUrl: "/RemoteDownload/addUrl", basePath: "/", searchForm: !0, sidebar: !0, @@ -778,7 +795,9 @@ function(e) { remove: !0, createFolder: !0, pickFiles: !1, - pickFolders: !1 + pickFolders: !1, + allowRemoteDownload: !1, + allowTorrentDownload: !1, }, multipleDownloadFileName: "angular-filemanager.zip", filterFileExtensions: [], @@ -994,6 +1013,25 @@ function(e, r) { }), s.promise }, + o.prototype.startRemoteDownload = function(api,url,path) { + var o = this, + s = n.defer(), + l = { + action: "remoteDownload", + path: path, + url:url + }; + return o.inprocess = !0, + o.error = "", + e.post(api, l).success(function(e, r) { + o.deferredHandler(e, s, r) + }).error(function(e, r) { + o.deferredHandler(e, s, r, a.instant("error_moving")) + })["finally"](function() { + o.inprocess = !1 + }), + s.promise + }, o.prototype.remove = function(r, i,dir) { var t = this, o = n.defer(), @@ -1307,6 +1345,9 @@ function(e) { var dirList = this.getFileList(dir); return this.apiHandler.move(r.moveUrl,dirList ,i, this.getPath(n)) }, + i.prototype.startRemoteDownload = function(url,path) { + return this.apiHandler.startRemoteDownload(r.remoteDownloadUrl,url ,this.getPath(path)) + }, i.prototype.remove = function(e,dir) { var n = this.getFileList(e); var dirList = this.getFileList(dir); @@ -1516,8 +1557,8 @@ angular.module("FileManagerApp").run(["$templateCache", e.put("src/templates/main-table-modal.html", '\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{"name" | translate}}\r\n \r\n \r\n
\r\n
\r\n
\r\n {{"no_folders_in_folder" | translate}}...\r\n \r\n \r\n
\r\n {{ fileNavigator.error }}\r\n
\r\n \r\n \r\n {{item.model.name | strLimit : 32}}\r\n \r\n \r\n \r\n
'), e.put("src/templates/main-table.html", '\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{"name" | translate}}\r\n \r\n \r\n
\r\n
\r\n
\r\n {{"no_files_in_folder" | translate}}...\r\n
\r\n {{ fileNavigator.error }}\r\n
\r\n \r\n \r\n \r\n {{item.model.name | strLimit : 64}}\r\n \r\n
\r\n'), e.put("src/templates/main.html", '
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n'), - e.put("src/templates/modals.html", '\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'), - e.put("src/templates/navbar.html", '\r\n'), + e.put("src/templates/modals.html", '\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'), + e.put("src/templates/navbar.html", '\r\n'), e.put("src/templates/sidebar.html", '\r\n\r\n'), e.put("src/templates/spinner.html", '
\r\n \r\n \r\n \r\n
') } diff --git a/static/js/home.js b/static/js/home.js index 21a300a1..70d02dee 100644 --- a/static/js/home.js +++ b/static/js/home.js @@ -49,6 +49,9 @@ changePermissions: false, upload: false, shareFile: uploadConfig.allowShare == "1" ? true : false, + allowRemoteDownload: uploadConfig.allowRemoteDownload, + allowTorrentDownload: uploadConfig.allowTorrentDownload, + }), }); }]);