! function(e, r, n) { "use strict"; r.module("FileManagerApp", ["pascalprecht.translate"]), n(e.document).on("shown.bs.modal", ".modal", function() { e.setTimeout(function() { n("[autofocus]", this).focus() }.bind(this), 100) }), n(e.document).on("click", function() { n("#context-menu").hide(); mobileBind(); }), n(e.document).on("contextmenu", '.main-navigation .table-files tr.item-list:has("td"), .item-list', function(r) { var i = n("#context-menu"); r.pageX >= e.innerWidth - i.width() && (r.pageX -= i.width()), r.pageY >= e.innerHeight - i.height() && (r.pageY -= i.height()), i.hide().css({ left: r.pageX, top: r.pageY }).appendTo("body").show(), r.preventDefault() }), Array.prototype.find || (Array.prototype.find = function(e) { if (null == this) throw new TypeError("Array.prototype.find called on null or undefined"); if ("function" != typeof e) throw new TypeError("predicate must be a function"); for (var r, n = Object(this), i = n.length >>> 0, a = arguments[1], t = 0; i > t; t++) if (r = n[t], e.call(a, r, t, n)) return r }) }(window, angular, jQuery), function(e, r) { "use strict"; e.module("FileManagerApp").controller("FileManagerCtrl", ["$scope", "$rootScope", "$window", "$translate", "fileManagerConfig", "item", "fileNavigator", "apiMiddleware", function(e, n, i, a, t, o, s, l) { var d = i.localStorage; e.config = t, e.reverse = !1, e.predicate = ["model.type", "model.name"], e.order = function(r) { e.reverse = e.predicate[1] === r ? !e.reverse : !1, e.predicate[1] = r }, e.query = "", e.fileNavigator = new s, e.apiMiddleware = new l, e.uploadFileList = [], e.viewTemplate = d.getItem("viewTemplate") || "main-icons.html", e.fileList = [], e.temps = [], e.$watch("temps", function() { e.singleSelection() ? e.temp = e.singleSelection() : (e.temp = new o({ rights: 644 }), e.temp.multiple = !0), e.temp.revert(), $.material.init(); }), e.fileNavigator.onRefresh = function() { e.temps = [], e.query = "", n.selectedModalPath = e.fileNavigator.currentPath, $.cookie('path_tmp', n.selectedModalPath); }, e.setTemplate = function(r) { d.setItem("viewTemplate", r), e.viewTemplate = r }, e.changeLanguage = function(e) { return e ? (d.setItem("language", e), a.use(e)) : void a.use(d.getItem("language") || t.defaultLang) }, e.isSelected = function(r) { return -1 !== e.temps.indexOf(r) }, e.selectOrUnselect = function(r, n) { var i = e.temps.indexOf(r), a = n && 3 == n.which; if (n && n.target.hasAttribute("prevent")) return void(e.temps = []); if (!(!r || a && e.isSelected(r))) { if (n && n.shiftKey && !a) { var t = e.fileList, o = t.indexOf(r), s = e.temps[0], l = t.indexOf(s), d = void 0; if (s && t.indexOf(s) < o) { for (e.temps = []; o >= l;) d = t[l], !e.isSelected(d) && e.temps.push(d), l++; return } if (s && t.indexOf(s) > o) { for (e.temps = []; l >= o;) d = t[l], !e.isSelected(d) && e.temps.push(d), l--; return } } return n && !a && (n.ctrlKey || n.metaKey) ? void(e.isSelected(r) ? e.temps.splice(i, 1) : e.temps.push(r)) : void(e.temps = [r]) } }, e.singleSelection = function() { return 1 === e.temps.length && e.temps[0] }, e.totalSelecteds = function() { return { total: e.temps.length } }, e.selectionHas = function(r) { return e.temps.find(function(e) { return e && e.model.type === r }) }, e.prepareNewFolder = function() { var r = new o(null, e.fileNavigator.currentPath); return e.temps = [r], r }, e.smartClick = function(r) { var n = e.config.allowedActions.pickFiles; if (r.isFolder()) return e.fileNavigator.folderClick(r); if ("function" == typeof e.config.pickCallback && n) { var i = e.config.pickCallback(r.model); if (i === !0) return } return r.isImage() ? e.config.previewImagesInModal ? e.openImagePreview(r) : e.apiMiddleware.download(r, !0) : r.isEditable() ? e.openEditItem(r) : void 0 }, e.openImagePreview = function() { var r = e.singleSelection(); t =e.apiMiddleware.listPic(r); loadPreview(t); }, e.openGetSource = function() { var r = e.singleSelection(); e.apiMiddleware.apiHandler.inprocess = !0, e.modal("getsource", null, !0).find("#source-target").attr("tmp", e.apiMiddleware.getsource(r)).unbind("load error"); if(cliLoad !=1){ var clipboard = new Clipboard('.btn-copy'); cliLoad =1; clipboard.on('success', function(e) { toastr["success"]("复制成功"); })} e.apiMiddleware.apiHandler.inprocess = !1; }, e.openVideoPreview = function() { var r = e.singleSelection(); e.apiMiddleware.apiHandler.inprocess = !1, e.modal("videopreview", null, !0); loadDPlayer(e.apiMiddleware.preview(r)); }, e.openAudioPreview = function() { var r = e.singleSelection(); e.apiMiddleware.apiHandler.inprocess = !1, e.modal("audiopreview", null, !0).find("#audiopreview-target").attr("src", e.apiMiddleware.preview(r)).unbind("load error").on("load error", function() { e.apiMiddleware.apiHandler.inprocess = !1, e.$apply() }) }, e.openEditItem = function() { var r = e.singleSelection(); e.apiMiddleware.getContent(r).then(function(e) { r.tempModel.content = r.model.content = e.result }), e.modal("edit") }, e.modal = function(n, i, a) { var t = r("#" + n); return t.modal(i ? "hide" : "show"), e.apiMiddleware.apiHandler.error = "", e.apiMiddleware.apiHandler.asyncSuccess = !1, a ? t : !0 }, e.modalWithPathSelector = function(r) { return n.selectedModalPath = e.fileNavigator.currentPath, e.modal(r) }, e.isInThisPath = function(r) { var n = e.fileNavigator.currentPath.join("/") + "/"; return -1 !== n.indexOf(r + "/") }, e.edit = function() { e.apiMiddleware.edit(e.singleSelection()).then(function() { e.modal("edit", !0) }) }, e.changePermissions = function() { e.apiMiddleware.changePermissions(e.temps, e.temp).then(function() { e.fileNavigator.refresh(), e.modal("changepermissions", !0) }) }, e.download = function() { var r = e.singleSelection(); if (!e.selectionHas("dir")) return r ? e.apiMiddleware.download(r) : e.apiMiddleware.downloadMultiple(e.temps) }, e.copy = function() { var r = e.singleSelection(); if (r) { var i = r.tempModel.name.trim(), t = e.fileNavigator.fileNameExists(i); if (t && c(r)) return e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1; if (!i) return e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1 } e.apiMiddleware.copy(e.temps, n.selectedModalPath).then(function() { e.fileNavigator.refresh(), e.modal("copy", !0) }) }, e.compress = function() { var r = e.temp.tempModel.name.trim(), i = e.fileNavigator.fileNameExists(r); return i && c(e.temp) ? (e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) : r ? void e.apiMiddleware.compress(e.temps, r, n.selectedModalPath).then(function() { return e.fileNavigator.refresh(), e.config.compressAsync ? void(e.apiMiddleware.apiHandler.asyncSuccess = !0) : e.modal("compress", !0) }, function() { e.apiMiddleware.apiHandler.asyncSuccess = !1 }) : (e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) }, e.extract = function() { var r = e.temp, i = e.temp.tempModel.name.trim(), t = e.fileNavigator.fileNameExists(i); return t && c(e.temp) ? (e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) : i ? void e.apiMiddleware.extract(r, i, n.selectedModalPath).then(function() { return e.fileNavigator.refresh(), e.config.extractAsync ? void(e.apiMiddleware.apiHandler.asyncSuccess = !0) : e.modal("extract", !0) }, function() { e.apiMiddleware.apiHandler.asyncSuccess = !1 }) : (e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) }, e.remove = function() { var dirList= new Array(); var fileList = new Array(); for(var x in e.temps){ if (e.temps[x].model.type == "dir"){ dirList.push(e.temps[x]); }else{ fileList.push(e.temps[x]); } } //console.log(dirList); e.apiMiddleware.remove(fileList,dirList).then(function() { e.fileNavigator.refresh(), e.modal("remove", !0) getMemory(); }) }, e.move = function() { var dirList= new Array(); var fileList = new Array(); for(var x in e.temps){ if (e.temps[x].model.type == "dir"){ dirList.push(e.temps[x]); }else{ fileList.push(e.temps[x]); } } var r = e.singleSelection() || e.temps[0]; return r && c(r) ? (e.apiMiddleware.apiHandler.error = a.instant("error_cannot_move_same_path"), !1) : void e.apiMiddleware.move(fileList,dirList, n.selectedModalPath).then(function() { e.fileNavigator.refresh(), e.modal("move", !0) }) }, e.rename = function() { var r = e.singleSelection(), n = r.tempModel.name, i = r.tempModel.path.join("") === r.model.path.join(""); return !n || i && e.fileNavigator.fileNameExists(n) ? (e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) : void e.apiMiddleware.rename(r).then(function() { e.fileNavigator.refresh(), e.modal("rename", !0) }) }, e.sharePublic = function() { var r = e.singleSelection(), n = r.tempModel.name, i = r.tempModel.path.join("") === r.model.path.join(""); return void e.apiMiddleware.sharep(r).then(function(ee) { e.modal("share", !0); //console.log(r.model.name); e.modal("share_result",null, !0).find("#share-public-target").attr("value",ee.result); document.getElementById("file_name").innerHTML = r.model.name if(cliLoad !=1){ var clipboard = new Clipboard('.btn-copy'); cliLoad =1; clipboard.on('success', function(e) { toastr["success"]("复制成功"); })} }) }, e.shareSecret = function() { var r = e.singleSelection(), n = r.tempModel.name, i = r.tempModel.path.join("") === r.model.path.join(""); return void e.apiMiddleware.sharec(r).then(function(ee) { e.modal("share", !0); //console.log(r.model.name); e.modal("share_result",null, !0).find("#share-public-target").attr("value",ee.result); document.getElementById("file_name").innerHTML = r.model.name if(cliLoad !=1){ var clipboard = new Clipboard('.btn-copy'); cliLoad =1; clipboard.on('success', function(e) { toastr["success"]("复制成功"); })} }) }, e.createFolder = function() { var r = e.singleSelection(), n = r.tempModel.name; return !n || e.fileNavigator.fileNameExists(n) ? e.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename") : void e.apiMiddleware.createFolder(r).then(function() { e.fileNavigator.refresh(), e.modal("newfolder", !0) }) }, /* hahahahahahahaha */ e.addForUpload = function(r) { e.uploadFileList = e.uploadFileList.concat(r), e.modal("uploadfile") }, e.removeFromUpload = function(r) { e.uploadFileList.splice(r, 1) }, e.uploadFiles = function() { e.apiMiddleware.upload(e.uploadFileList, e.fileNavigator.currentPath).then(function() { e.fileNavigator.refresh(), e.uploadFileList = [], e.modal("uploadfile", !0) }, function(r) { var n = r.result && r.result.error || a.instant("error_uploading_files"); e.apiMiddleware.apiHandler.error = n }) }; var c = function(e) { var r = n.selectedModalPath.join(""), i = e && e.model.path.join(""); return i === r }, p = function(e) { var r = i.location.search.substr(1).split("&").filter(function(r) { return e === r.split("=")[0] }); return r[0] && r[0].split("=")[1] || void 0 }; e.changeLanguage(p("lang")), e.isWindows = "Windows" === p("server"), e.fileNavigator.refresh() } ]) }(angular, jQuery), function(e) { "use strict"; e.module("FileManagerApp").controller("ModalFileManagerCtrl", ["$scope", "$rootScope", "fileNavigator", function(e, r, n) { e.reverse = !1, e.predicate = ["model.type", "model.name"], e.fileNavigator = new n, r.selectedModalPath = [], e.order = function(r) { e.reverse = e.predicate[1] === r ? !e.reverse : !1, e.predicate[1] = r }, e.select = function(n) { r.selectedModalPath = n.model.fullPath().split("/").filter(Boolean), e.modal("selector", !0) }, e.selectCurrent = function() { r.selectedModalPath = e.fileNavigator.currentPath, e.modal("selector", !0) }, e.selectedFilesAreChildOfPath = function(r) { var n = r.model.fullPath(); return e.temps.find(function(e) { var r = e.model.fullPath(); return n == r ? !0 : void 0 }) }, r.openNavigator = function(r) { e.fileNavigator.currentPath = r, e.fileNavigator.refresh(), e.modal("selector") }, r.getSelectedPath = function() { var n = r.selectedModalPath.filter(Boolean), i = "/" + n.join("/"); return e.singleSelection() && !e.singleSelection().isFolder() && (i += "/" + e.singleSelection().tempModel.name), i.replace(/\/\//, "/") } } ]) }(angular), function(e) { "use strict"; var r = e.module("FileManagerApp"); r.directive("angularFilemanager", ["$parse", "fileManagerConfig", function(e, r) { return { restrict: "EA", templateUrl: r.tplPath + "/main.html" } } ]), r.directive("ngFile", ["$parse", function(e) { return { restrict: "A", link: function(r, n, i) { var a = e(i.ngFile), t = a.assign; n.bind("change", function() { r.$apply(function() { t(r, n[0].files) }) }) } } } ]), r.directive("ngRightClick", ["$parse", function(e) { return function(r, n, i) { var a = e(i.ngRightClick); n.bind("contextmenu", function(e) { r.$apply(function() { e.preventDefault(), a(r, { $event: e }) }) }) } } ]) }(angular), function(e) { "use strict"; e.module("FileManagerApp").service("chmod", function() { var e = function(e) { if (this.owner = this.getRwxObj(), this.group = this.getRwxObj(), this.others = this.getRwxObj(), e) { var r = isNaN(e) ? this.convertfromCode(e) : this.convertfromOctal(e); if (!r) throw new Error("Invalid chmod input data (%s)".replace("%s", e)); this.owner = r.owner, this.group = r.group, this.others = r.others } }; return e.prototype.toOctal = function(e, r) { var n = []; return ["owner", "group", "others"].forEach(function(e, r) { n[r] = this[e].read && this.octalValues.read || 0, n[r] += this[e].write && this.octalValues.write || 0, n[r] += this[e].exec && this.octalValues.exec || 0 }.bind(this)), (e || "") + n.join("") + (r || "") }, e.prototype.toCode = function(e, r) { var n = []; return ["owner", "group", "others"].forEach(function(e, r) { n[r] = this[e].read && this.codeValues.read || "-", n[r] += this[e].write && this.codeValues.write || "-", n[r] += this[e].exec && this.codeValues.exec || "-" }.bind(this)), (e || "") + n.join("") + (r || "") }, e.prototype.getRwxObj = function() { return { read: !1, write: !1, exec: !1 } }, e.prototype.octalValues = { read: 4, write: 2, exec: 1 }, e.prototype.codeValues = { read: "r", write: "w", exec: "x" }, e.prototype.convertfromCode = function(e) { if (e = ("" + e).replace(/\s/g, ""), e = 10 === e.length ? e.substr(1) : e, /^[-rwxts]{9}$/.test(e)) { var r = [], n = e.match(/.{1,3}/g); for (var i in n) { var a = this.getRwxObj(); a.read = /r/.test(n[i]), a.write = /w/.test(n[i]), a.exec = /x|t/.test(n[i]), r.push(a) } return { owner: r[0], group: r[1], others: r[2] } } }, e.prototype.convertfromOctal = function(e) { if (e = ("" + e).replace(/\s/g, ""), e = 4 === e.length ? e.substr(1) : e, /^[0-7]{3}$/.test(e)) { var r = [], n = e.match(/.{1}/g); for (var i in n) { var a = this.getRwxObj(); a.read = /[4567]/.test(n[i]), a.write = /[2367]/.test(n[i]), a.exec = /[1357]/.test(n[i]), r.push(a) } return { owner: r[0], group: r[1], others: r[2] } } }, e }) }(angular), function(e) { "use strict"; e.module("FileManagerApp").factory("item", ["fileManagerConfig", "chmod", function(r, n) { var i = function(r, i) { function a(e) { var r = (e || "").toString().split(/[- :]/); return new Date(r[0], r[1] - 1, r[2], r[3], r[4], r[5]) } var t = { name: r && r.name || "", name2: r && r.name2 || "", path: i || [], type: r && r.type || "file", size: r && parseInt(r.size || 0), date: a(r && r.date), perms: new n(r && r.rights), content: r && r.content || "", fileId: r && r.id || '', recursive: !1, fullPath: function() { var e = this.path.filter(Boolean); return ("/" + e.join("/") + "/" + this.name).replace(/\/\//, "/") } }; this.error = "", this.processing = !1, this.model = e.copy(t), this.tempModel = e.copy(t) }; return i.prototype.update = function() { e.extend(this.model, e.copy(this.tempModel)) }, i.prototype.revert = function() { e.extend(this.tempModel, e.copy(this.model)), this.error = "" }, i.prototype.isFolder = function() { return "dir" === this.model.type }, i.prototype.isEditable = function() { return !this.isFolder() && r.isEditableFilePattern.test(this.model.name) }, i.prototype.isImage = function() { return r.isImageFilePattern.test(this.model.name) }, i.prototype.isVideo = function() { return r.isVideoFilePattern.test(this.model.name) }, i.prototype.isAudio = function() { return r.isAudioFilePattern.test(this.model.name) }, i.prototype.isCompressible = function() { return this.isFolder() }, i.prototype.isExtractable = function() { return !this.isFolder() && r.isExtractableFilePattern.test(this.model.name) }, i.prototype.isSelectable = function() { return this.isFolder() && r.allowedActions.pickFolders || !this.isFolder() && r.allowedActions.pickFiles }, i } ]) }(angular), function(e) { "use strict"; var r = e.module("FileManagerApp"); r.filter("strLimit", ["$filter", function(e) { return function(r, n, i) { function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; var chineseRegex = /[^\x00-\xff]/g; var singleChar = ""; var strLength = str.replace(chineseRegex, "**").length; for (var i = 0; i < strLength; i++) { singleChar = str.charAt(i).toString(); if (singleChar.match(chineseRegex) != null) { newLength += 2; } else { newLength++; } if (newLength > len) { break; } newStr += singleChar; } if (hasDot && strLength > len) { newStr += "..."; } return newStr; } return r.length <= n ? r : subString(r, n) + (i || "...") } } ]), r.filter("fileExtension", ["$filter", function(e) { return function(r) { return /\./.test(r) && e("strLimit")(r.split(".").pop(), 3, "..") || "" } } ]), r.filter("formatDate", ["$filter", function() { return function(e) { return e instanceof Date ? e.toISOString().substring(0, 19).replace("T", " ") : (e.toLocaleString || e.toString).apply(e) } } ]), r.filter("humanReadableFileSize", ["$filter", "fileManagerConfig", function(e, r) { var n = [" kB", " MB", " GB", " TB", "PB", "EB", "ZB", "YB"], i = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"]; return function(e) { var a = -1, t = e; do t /= 1024, a++; while (t > 1024); var o = r.useBinarySizePrefixes ? i[a] : n[a]; return Math.max(t, .1).toFixed(1) + " " + o } } ]) }(angular), function(e) { "use strict"; e.module("FileManagerApp").provider("fileManagerConfig", function() { var r = { appName: "angular-filemanager v1.5", defaultLang: "zh_cn", listUrl: "/Share/ListFile/"+shareInfo.shareId, previewUrl:"/Share/Preview/"+shareInfo.shareId, renameUrl: "/File/Rename", shareUrl:"/File/Share", copyUrl: "bridges/php/handler.php", moveUrl: "/File/Move", removeUrl: "/File/Delete", editUrl: "/File/Edit", getContentUrl: "/File/Content", createFolderUrl: "/File/createFolder", downloadFileUrl: "/Share/Download/"+shareInfo.shareId, downloadMultipleUrl: "bridges/php/handler.php", compressUrl: "bridges/php/handler.php", extractUrl: "bridges/php/handler.php", permissionsUrl: "bridges/php/handler.php", sourceUrl:"/File/gerSource", basePath: "/", searchForm: !0, sidebar: !0, breadcrumb: !0, allowedActions: { shareFile:!1, getSource:!1, rename: !1, move: !1, copy: !1, edit: !1, changePermissions: !1, compress: !1, compressChooseName: !1, extract: !1, download: !0, downloadMultiple: !1, preview: !0, remove: !1, createFolder: !1, pickFiles: !1, pickFolders: !1 }, multipleDownloadFileName: "angular-filemanager.zip", filterFileExtensions: [], showExtensionIcons: !0, showSizeForDirectories: !1, useBinarySizePrefixes: !1, downloadFilesByAjax: !0, previewImagesInModal: !0, enablePermissionsRecursive: !0, compressAsync: !1, extractAsync: !1, pickCallback: false, isEditableFilePattern: /\.(txt|diff?|patch|svg|asc|cnf|cfg|conf|html?|.html|cfm|cgi|aspx?|ini|pl|py|md|css|cs|js|jsp|log|htaccess|htpasswd|gitignore|gitattributes|env|json|atom|eml|rss|markdown|sql|xml|xslt?|sh|rb|as|bat|cmd|cob|for|ftn|frm|frx|inc|lisp|scm|coffee|php[3-6]?|java|c|cbl|go|h|scala|vb|tmpl|lock|go|yml|yaml|tsv|lst)$/i, isImageFilePattern: /\.(jpe?g|gif|bmp|png|svg|tiff?)$/i, isVideoFilePattern:/\.(mp4|flv|avi|tff?)$/i, isAudioFilePattern:/\.(mp3|wav|ogg?)$/i, isExtractableFilePattern: /\.(gz|tar|rar|g?zip)$/i, tplPath: "src/templates" }; return { $get: function() { return r }, set: function(n) { e.extend(r, n) } } }) }(angular), function(e) { "use strict"; e.module("FileManagerApp").config(["$translateProvider", function(e) { e.useSanitizeValueStrategy(null), e.translations("zh_cn", { filemanager: shareInfo.dirName, language: "语言", english: "英语", spanish: "西班牙语", portuguese: "葡萄牙语", french: "法语", german: "德语", hebrew: "希伯来语", italian: "意大利", slovak: "斯洛伐克语", chinese_tw: "正体中文", chinese_cn: "简体中文", russian: "俄語", ukrainian: "烏克蘭", turkish: "土耳其", persian: "波斯語", polish: "波兰语", confirm: "确定", cancel: "取消", close: "关闭", upload_files: "上传文件", files_will_uploaded_to: "文件将上传到", select_files: "选择文件", uploading: "上传中", permissions: "权限", select_destination_folder: "选择目标文件", source: "源自", destination: "目的地", copy_file: "复制文件", sure_to_delete: "确定要删除?", change_name_move: "改名或移动?", enter_new_name_for: "输入新的名称", extract_item: "解压", extraction_started: "解压已经在后台开始", compression_started: "压缩已经在后台开始", enter_folder_name_for_extraction: "输入解压的目标文件夹", enter_file_name_for_compression: "输入要压缩的文件名", toggle_fullscreen: "切换全屏", edit_file: "编辑文件", file_content: "文件内容", loading: "加载中", search: "搜索", create_folder: "创建文件夹", create: "创建", folder_name: "文件夹名称", upload: "上传", change_permissions: "修改权限", change: "修改", details: "详细信息", icons: "图标", list: "列表", name: "名称", size: "尺寸", actions: "操作", date: "日期", selection: "选择", no_files_in_folder: "此文件夹没有文件", no_folders_in_folder: "此文件夹不包含子文件夹", select_this: "选择此文件", go_back: "后退", wait: "等待", move: "移动", download: "下载", view_item: "查看子项", remove: "删除", edit: "编辑", copy: "复制", rename: "重命名", extract: "解压", compress: "压缩", error_invalid_filename: "非法文件名或文件已经存在, 请指定其它名称", error_modifying: "修改文件出错", error_deleting: "删除文件或文件夹出错", error_renaming: "重命名文件出错", error_copying: "复制文件出错", error_compressing: "压缩文件或文件夹出错", error_extracting: "解压文件出错", error_creating_folder: "创建文件夹出错", error_getting_content: "获取文件内容出错", error_changing_perms: "修改文件权限出错", error_uploading_files: "上传文件出错", sure_to_start_compression_with: "确定要压缩?", owner: "拥有者", group: "群组", others: "其他", read: "读取", write: "写入", exec: "执行", original: "原始", changes: "变化", recursive: "递归", preview: "成员预览", open: "打开", these_elements: "共 {{total}} 个", new_folder: "新文件夹", download_as_zip: "下载的ZIP" }) } ]) }(angular), function(e, r) { "use strict"; e.module("FileManagerApp").service("apiHandler", ["$http", "$q", "$window", "$translate", function(e, n, i, a, t) { e.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; var o = function() { this.inprocess = !1, this.asyncSuccess = !1, this.error = "" }; return o.prototype.deferredHandler = function(e, r, n, i) { return e && "object" == typeof e || (this.error = "Error %s - 请求失败,登录可能已过期,请重新登陆.".replace("%s", n)), 404 == n && (this.error = "Error 404 - Backend bridge is not working, please check the ajax response."), e.result && e.result.error && (this.error = e.result.error), !this.error && e.error && (this.error = e.error.message), !this.error && i && (this.error = i), this.error ? r.reject(e) : r.resolve(e) }, o.prototype.list = function(r, i, a, t) { var o = this, s = a || o.deferredHandler, l = n.defer(), d = { action: "list", path: i, fileExtensions: t && t.length ? t : void 0 }; return o.inprocess = !0, o.error = "", e.post(r, d).success(function(e, r) { s(e, l, r) }).error(function(e, r) { s(e, l, r, "请求失败,登录可能已过期,请重新登录") })["finally"](function() { o.inprocess = !1 }), l.promise }, o.prototype.copy = function(r, i, t, o) { var s = this, l = n.defer(), d = { action: "copy", items: i, newPath: t }; return o && 1 === i.length && (d.singleFilename = o), s.inprocess = !0, s.error = "", e.post(r, d).success(function(e, r) { s.deferredHandler(e, l, r) }).error(function(e, r) { s.deferredHandler(e, l, r, a.instant("error_copying")) })["finally"](function() { s.inprocess = !1 }), l.promise }, o.prototype.move = function(r,dir, i, t) { var o = this, s = n.defer(), l = { action: "move", items: i, dirs:dir, newPath: t }; return o.inprocess = !0, o.error = "", e.post(r, 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(), s = { action: "remove", items: i, dirs:dir }; return t.inprocess = !0, t.error = "", e.post(r, s).success(function(e, r) { t.deferredHandler(e, o, r) }).error(function(e, r) { t.deferredHandler(e, o, r, a.instant("error_deleting")) })["finally"](function() { t.inprocess = !1 }), o.promise }, o.prototype.getContent = function(r, i) { var t = this, o = n.defer(), s = { action: "getContent", item: i }; return t.inprocess = !0, t.error = "", e.post(r, s).success(function(e, r) { t.deferredHandler(e, o, r) }).error(function(e, r) { t.deferredHandler(e, o, r, a.instant("error_getting_content")) })["finally"](function() { t.inprocess = !1 }), o.promise }, o.prototype.edit = function(r, i, t) { var o = this, s = n.defer(), l = { action: "edit", item: i, content: t }; return o.inprocess = !0, o.error = "", e.post(r, l).success(function(e, r) { o.deferredHandler(e, s, r) }).error(function(e, r) { o.deferredHandler(e, s, r, a.instant("error_modifying")) })["finally"](function() { o.inprocess = !1 }), s.promise }, o.prototype.rename = function(r, i, t) { var o = this, s = n.defer(), l = { action: "rename", item: i, newItemPath: t }; return o.inprocess = !0, o.error = "", e.post(r, l).success(function(e, r) { o.deferredHandler(e, s, r) }).error(function(e, r) { o.deferredHandler(e, s, r, a.instant("error_renaming")) })["finally"](function() { o.inprocess = !1 }), s.promise }, o.prototype.sharep = function(r, i) { var o = this, s = n.defer(), l = { action: "share", item: i, shareType: "public" }; return o.inprocess = !0, o.error = "", e.post(r, l).success(function(e, r) { o.deferredHandler(e, s, r) }).error(function(e, r) { o.deferredHandler(e, s, r, a.instant("error_renaming")) })["finally"](function() { o.inprocess = !1 }), s.promise }, o.prototype.sharec = function(r, i) { var o = this, s = n.defer(), l = { action: "share", item: i, shareType: "private" }; return o.inprocess = !0, o.error = "", e.post(r, l).success(function(e, r) { o.deferredHandler(e, s, r) }).error(function(e, r) { o.deferredHandler(e, s, r, a.instant("error_renaming")) })["finally"](function() { o.inprocess = !1 }), s.promise }, o.prototype.getUrl = function(e, n) { var i = { action: "download", path: n }; return n && [e, r.param(i)].join("?") }, o.prototype.preview = function(e, n) { var i = { action: "preview", path: n }; return n && [e, r.param(i)].join("?") }, o.prototype.listPic = function(e, n) { return "ds"; }, o.prototype.getsource = function(e, n) { var i = { action: "source", path: n }; $.post(e,i,function(data){ var data = eval("("+data+")"); document.getElementById("source-target").value=data.url; return n && [e, r.param(i)].join("?") }) }, o.prototype.download = function(r, t, o, s, l) { var d = this, c = this.getUrl(r, t); if (!s || l || !i.saveAs) return !i.saveAs && i.console.log("Your browser dont support ajax download, downloading by default"), !!i.open(c, "_blank", ""); var p = n.defer(); return d.inprocess = !0, e.get(c).success(function(e) { var r = new i.Blob([e]); p.resolve(e), i.saveAs(r, o) }).error(function(e, r) { d.deferredHandler(e, p, r, a.instant("error_downloading")) })["finally"](function() { d.inprocess = !1 }), p.promise }, o.prototype.downloadMultiple = function(t, o, s, l, d) { var c = this, p = n.defer(), m = { action: "downloadMultiple", items: o, toFilename: s }, u = [t, r.param(m)].join("?"); return l && !d && i.saveAs ? (c.inprocess = !0, e.get(t).success(function(e) { var r = new i.Blob([e]); p.resolve(e), i.saveAs(r, s) }).error(function(e, r) { c.deferredHandler(e, p, r, a.instant("error_downloading")) })["finally"](function() { c.inprocess = !1 }), p.promise) : (!i.saveAs && i.console.log("Your browser dont support ajax download, downloading by default"), !!i.open(u, "_blank", "")) }, o.prototype.compress = function(r, i, t, o) { var s = this, l = n.defer(), d = { action: "compress", items: i, destination: o, compressedFilename: t }; return s.inprocess = !0, s.error = "", e.post(r, d).success(function(e, r) { s.deferredHandler(e, l, r) }).error(function(e, r) { s.deferredHandler(e, l, r, a.instant("error_compressing")) })["finally"](function() { s.inprocess = !1 }), l.promise }, o.prototype.extract = function(r, i, t, o) { var s = this, l = n.defer(), d = { action: "extract", item: i, destination: o, folderName: t }; return s.inprocess = !0, s.error = "", e.post(r, d).success(function(e, r) { s.deferredHandler(e, l, r) }).error(function(e, r) { s.deferredHandler(e, l, r, a.instant("error_extracting")) })["finally"](function() { s.inprocess = !1 }), l.promise }, o.prototype.changePermissions = function(r, i, t, o, s) { var l = this, d = n.defer(), c = { action: "changePermissions", items: i, perms: t, permsCode: o, recursive: !!s }; return l.inprocess = !0, l.error = "", e.post(r, c).success(function(e, r) { l.deferredHandler(e, d, r) }).error(function(e, r) { l.deferredHandler(e, d, r, a.instant("error_changing_perms")) })["finally"](function() { l.inprocess = !1 }), d.promise }, o.prototype.createFolder = function(r, i) { var t = this, o = n.defer(), s = { action: "createFolder", newPath: i }; return t.inprocess = !0, t.error = "", e.post(r, s).success(function(e, r) { t.deferredHandler(e, o, r) }).error(function(e, r) { t.deferredHandler(e, o, r, a.instant("error_creating_folder")) })["finally"](function() { t.inprocess = !1 }), o.promise }, o } ]) }(angular, jQuery), function(e) { "use strict"; e.module("FileManagerApp").service("apiMiddleware", ["$window", "fileManagerConfig", "apiHandler", function(e, r, n) { var i = function() { this.apiHandler = new n }; return i.prototype.getPath = function(e) { return "/" + e.join("/") }, i.prototype.getFileList = function(e) { return (e || []).map(function(e) { return e && e.model.fullPath() }) }, i.prototype.getFilePath = function(e) { return e && e.model.fullPath() }, i.prototype.list = function(e, n) { return this.apiHandler.list(r.listUrl, this.getPath(e), n) }, i.prototype.copy = function(e, n) { var i = this.getFileList(e), a = 1 === i.length ? e[0].tempModel.name : void 0; return this.apiHandler.copy(r.copyUrl, i, this.getPath(n), a) }, i.prototype.move = function(e,dir, n) { var i = this.getFileList(e); var dirList = this.getFileList(dir); return this.apiHandler.move(r.moveUrl,dirList ,i, this.getPath(n)) }, i.prototype.remove = function(e,dir) { var n = this.getFileList(e); var dirList = this.getFileList(dir); return this.apiHandler.remove(r.removeUrl, n,dirList) }, i.prototype.getContent = function(e) { var n = this.getFilePath(e); return this.apiHandler.getContent(r.getContentUrl, n) }, i.prototype.edit = function(e) { var n = this.getFilePath(e); return this.apiHandler.edit(r.editUrl, n, e.tempModel.content) }, i.prototype.rename = function(e) { var n = this.getFilePath(e), i = e.tempModel.fullPath(); return this.apiHandler.rename(r.renameUrl, n, i) }, i.prototype.sharep = function(e) { var n = this.getFilePath(e); return this.apiHandler.sharep(r.shareUrl, n) }, i.prototype.sharec = function(e) { var n = this.getFilePath(e); return this.apiHandler.sharec(r.shareUrl, n) }, i.prototype.getUrl = function(e) { var n = this.getFilePath(e); return this.apiHandler.getUrl(r.downloadFileUrl, n) }, i.prototype.preview = function(e) { var n = this.getFilePath(e); return this.apiHandler.preview(r.previewUrl, n) }, i.prototype.listPic = function(e) { var n = this.getFilePath(e); var s = true; $.get({async:false,url:"/Share/ListPic?path="+n+"&id="+shareInfo.shareId}).complete(function(data){    s = data; }); return s.responseJSON; }, i.prototype.getsource = function(e) { var n = this.getFilePath(e); return this.apiHandler.getsource(r.sourceUrl, n) }, i.prototype.download = function(e, n) { var i = this.getFilePath(e), a = e.model.name; return e.isFolder() ? void 0 : this.apiHandler.download(r.downloadFileUrl, i, a, r.downloadFilesByAjax, n) }, i.prototype.downloadMultiple = function(e, n) { var i = this.getFileList(e), a = (new Date).getTime().toString().substr(8, 13), t = a + "-" + r.multipleDownloadFileName; return this.apiHandler.downloadMultiple(r.downloadMultipleUrl, i, t, r.downloadFilesByAjax, n) }, i.prototype.compress = function(e, n, i) { var a = this.getFileList(e); return this.apiHandler.compress(r.compressUrl, a, n, this.getPath(i)) }, i.prototype.extract = function(e, n, i) { var a = this.getFilePath(e); return this.apiHandler.extract(r.extractUrl, a, n, this.getPath(i)) }, i.prototype.changePermissions = function(e, n) { var i = this.getFileList(e), a = n.tempModel.perms.toCode(), t = n.tempModel.perms.toOctal(), o = !!n.tempModel.recursive; return this.apiHandler.changePermissions(r.permissionsUrl, i, a, t, o) }, i.prototype.createFolder = function(e) { var n = e.tempModel.fullPath(); return this.apiHandler.createFolder(r.createFolderUrl, n) }, i } ]) }(angular), function(e) { "use strict"; e.module("FileManagerApp").service("fileNavigator", ["apiMiddleware", "fileManagerConfig", "item", function(e, r, n) { var i = function() { this.apiMiddleware = new e, this.requesting = !1, this.fileList = [], this.currentPath = this.getBasePath(), this.history = [], this.error = "", this.onRefresh = function() {} }; return i.prototype.getBasePath = function() { var e = (r.basePath || "").replace(/^\//, ""); return e.trim() ? e.split("/") : [] }, i.prototype.deferredHandler = function(e, r, n, i) { return e && "object" == typeof e || (this.error = "Error %s - 请求失败,登录可能已过期,请重新登录".replace("%s", n)), 404 == n && (this.error = "Error 404 - Backend bridge is not working, please check the ajax response."), 200 == n && (this.error = null), !this.error && e.result && e.result.error && (this.error = e.result.error), !this.error && e.error && (this.error = e.error.message), !this.error && i && (this.error = i), this.error ? r.reject(e) : r.resolve(e) }, i.prototype.list = function() { return this.apiMiddleware.list(this.currentPath, this.deferredHandler.bind(this)) }, i.prototype.refresh = function() { var e = this; e.currentPath.length || (e.currentPath = this.getBasePath()); var r = e.currentPath.join("/"); return e.requesting = !0, e.fileList = [], e.list().then(function(i) { e.fileList = (i.result || []).map(function(r) { return new n(r, e.currentPath) }), e.buildTree(r), e.onRefresh() })["finally"](function() { e.requesting = !1 }) }, i.prototype.buildTree = function(e) { function r(e, n, i) { var a = i ? i + "/" + n.model.name : n.model.name; if (e.name && e.name.trim() && 0 !== i.trim().indexOf(e.name) && (e.nodes = []), e.name !== i) e.nodes.forEach(function(e) { r(e, n, i) }); else { for (var t in e.nodes) if (e.nodes[t].name === a) return; e.nodes.push({ item: n, name: a, nodes: [] }) } e.nodes = e.nodes.sort(function(e, r) { return e.name.toLowerCase() < r.name.toLowerCase() ? -1 : e.name.toLowerCase() === r.name.toLowerCase() ? 0 : 1 }) } function i(e, r) { r.push(e); for (var n in e.nodes) i(e.nodes[n], r) } function a(e, r) { return e.filter(function(e) { return e.name === r })[0] } var t = [], o = {}; !this.history.length && this.history.push({ name: this.getBasePath()[0] || "", nodes: [] }), i(this.history[0], t), o = a(t, e), o && (o.nodes = []); for (var s in this.fileList) { var l = this.fileList[s]; l instanceof n && l.isFolder() && r(this.history[0], l, e) } }, i.prototype.folderClick = function(e) { this.currentPath = [], e && e.isFolder() && (this.currentPath = e.model.fullPath().split("/").splice(1)), this.refresh() }, i.prototype.upDir = function() { this.currentPath[0] && (this.currentPath = this.currentPath.slice(0, -1), this.refresh()) }, i.prototype.goTo = function(e) { this.currentPath = this.currentPath.slice(0, e + 1), this.refresh() }, i.prototype.fileNameExists = function(e) { return this.fileList.find(function(r) { return e && r.model.name.trim() === e.trim() }) }, i.prototype.listHasFolders = function() { return this.fileList.find(function(e) { return "dir" === e.model.type }) }, i.prototype.getCurrentFolderName = function() { return this.currentPath.slice(-1)[0] || "/" }, i } ]) }(angular), angular.module("FileManagerApp").run(["$templateCache", function(e) { e.put("src/templates/current-folder-breadcrumb.html", ''), e.put("src/templates/item-context-menu.html", ''), e.put("src/templates/main-icons.html", '
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{"no_files_in_folder" | translate}}...\r\n
\r\n \r\n
\r\n {{ fileNavigator.error }}\r\n
\r\n
'), 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'), e.put("src/templates/navbar.html", '\r\n'), e.put("src/templates/sidebar.html", ''), e.put("src/templates/spinner.html", '
\r\n \r\n \r\n \r\n
') } ]);