!
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", '
\r\n - \r\n \r\n {{"filemanager" | translate}}\r\n \r\n
\r\n - \r\n \r\n {{dir | strLimit : 8}}\r\n \r\n \r\n {{dir | strLimit : 12}}\r\n \r\n
\r\n
'),
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 {{"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", ''),
e.put("src/templates/main-table.html", '\r\n'),
e.put("src/templates/main.html", '\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
![{{singleSelection().model.name}}]()
\r\n
{{\'loading\' | translate}} ...\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
{{singleSelection() && singleSelection().model.name}} 的源文件地址: \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
{{\'loading\' | translate}} ...\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
{{\'loading\' | translate}} ...\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\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", '