summaryrefslogtreecommitdiff
path: root/src/main/resources/assets/js/angular-filemanager.min.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/assets/js/angular-filemanager.min.js')
-rw-r--r--src/main/resources/assets/js/angular-filemanager.min.js2240
1 files changed, 2240 insertions, 0 deletions
diff --git a/src/main/resources/assets/js/angular-filemanager.min.js b/src/main/resources/assets/js/angular-filemanager.min.js
new file mode 100644
index 0000000..d83ad5f
--- /dev/null
+++ b/src/main/resources/assets/js/angular-filemanager.min.js
@@ -0,0 +1,2240 @@
+!function (e, r) {
+ "use strict";
+ r.module("FileManagerApp", ["pascalprecht.translate", "ngFileUpload"]), r.element(e.document).on("shown.bs.modal", ".modal", function () {
+ e.setTimeout(function () {
+ r.element("[autofocus]", this).focus()
+ }.bind(this), 100)
+ }), r.element(e.document).on("click", function () {
+ r.element("#context-menu").hide()
+ }), r.element(e.document).on("contextmenu", '.main-navigation .table-files tr.item-list:has("td"), .item-list', function (n) {
+ var i = r.element("#context-menu");
+ n.pageX >= e.innerWidth - i.width() && (n.pageX -= i.width()), n.pageY >= e.innerHeight - i.height() && (n.pageY -= i.height()), i.hide().css({
+ left: n.pageX,
+ top: n.pageY
+ }).appendTo("body").show(), n.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; t < i; t++) if (r = n[t], e.call(a, r, t, n)) return r
+ })
+}(window, angular), function (e) {
+ "use strict";
+ e.module("FileManagerApp").controller("FileManagerCtrl", ["$scope", "$rootScope", "$window", "$translate", "fileManagerConfig", "item", "fileNavigator", "apiMiddleware", function (r, n, i, a, t, o, s, l) {
+ var d = i.localStorage;
+ r.config = t, r.reverse = !1, r.predicate = ["model.type", "model.name"], r.order = function (e) {
+ r.reverse = r.predicate[1] === e && !r.reverse, r.predicate[1] = e
+ }, r.query = "", r.fileNavigator = new s, r.apiMiddleware = new l, r.uploadFileList = [], r.viewTemplate = d.getItem("viewTemplate") || "main-icons.html", r.fileList = [], r.temps = [], r.$watch("temps", function () {
+ r.singleSelection() ? r.temp = r.singleSelection() : (r.temp = new o({rights: 644}), r.temp.multiple = !0), r.temp.revert()
+ }), r.fileNavigator.onRefresh = function () {
+ r.temps = [], r.query = "", n.selectedModalPath = r.fileNavigator.currentPath
+ }, r.setTemplate = function (e) {
+ d.setItem("viewTemplate", e), r.viewTemplate = e
+ }, r.changeLanguage = function (e) {
+ if (e) return d.setItem("language", e), a.use(e);
+ a.use(d.getItem("language") || t.defaultLang)
+ }, r.isSelected = function (e) {
+ return -1 !== r.temps.indexOf(e)
+ }, r.selectOrUnselect = function (e, n) {
+ var i = r.temps.indexOf(e), a = n && 3 == n.which;
+ if (n && n.target.hasAttribute("prevent")) r.temps = []; else if (!(!e || a && r.isSelected(e))) {
+ if (n && n.shiftKey && !a) {
+ var t = r.fileList, o = t.indexOf(e), s = r.temps[0], l = t.indexOf(s), d = void 0;
+ if (s && t.indexOf(s) < o) {
+ for (r.temps = []; l <= o;) d = t[l], !r.isSelected(d) && r.temps.push(d), l++;
+ return
+ }
+ if (s && t.indexOf(s) > o) {
+ for (r.temps = []; l >= o;) d = t[l], !r.isSelected(d) && r.temps.push(d), l--;
+ return
+ }
+ }
+ !n || a || !n.ctrlKey && !n.metaKey ? r.temps = [e] : r.isSelected(e) ? r.temps.splice(i, 1) : r.temps.push(e)
+ }
+ }, r.singleSelection = function () {
+ return 1 === r.temps.length && r.temps[0]
+ }, r.totalSelecteds = function () {
+ return {total: r.temps.length}
+ }, r.selectionHas = function (e) {
+ return r.temps.find(function (r) {
+ return r && r.model.type === e
+ })
+ }, r.prepareNewFolder = function () {
+ var e = new o(null, r.fileNavigator.currentPath);
+ return r.temps = [e], e
+ }, r.smartClick = function (e) {
+ var n = r.config.allowedActions.pickFiles;
+ if (e.isFolder()) return r.fileNavigator.folderClick(e);
+ if ("function" == typeof r.config.pickCallback && n) {
+ if (!0 === r.config.pickCallback(e.model)) return
+ }
+ return e.isImage() ? r.config.previewImagesInModal ? r.openImagePreview(e) : r.apiMiddleware.download(e, !0) : e.isEditable() ? r.openEditItem(e) : void 0
+ }, r.openImagePreview = function () {
+ var e = r.singleSelection();
+ r.apiMiddleware.apiHandler.inprocess = !0, r.modal("imagepreview", null, !0).find("#imagepreview-target").attr("src", r.getUrl(e)).unbind("load error").on("load error", function () {
+ r.apiMiddleware.apiHandler.inprocess = !1, r.$apply()
+ })
+ }, r.openEditItem = function () {
+ var e = r.singleSelection();
+ r.apiMiddleware.getContent(e).then(function (r) {
+ e.tempModel.content = e.model.content = r.result
+ }), r.modal("edit")
+ }, r.modal = function (n, i, a) {
+ var t = e.element("#" + n);
+ return t.modal(i ? "hide" : "show"), r.apiMiddleware.apiHandler.error = "", r.apiMiddleware.apiHandler.asyncSuccess = !1, !a || t
+ }, r.modalWithPathSelector = function (e) {
+ return n.selectedModalPath = r.fileNavigator.currentPath, r.modal(e)
+ }, r.isInThisPath = function (e) {
+ return -1 !== (r.fileNavigator.currentPath.join("/") + "/").indexOf(e + "/")
+ }, r.edit = function () {
+ r.apiMiddleware.edit(r.singleSelection()).then(function () {
+ r.modal("edit", !0)
+ })
+ }, r.changePermissions = function () {
+ r.apiMiddleware.changePermissions(r.temps, r.temp).then(function () {
+ r.fileNavigator.refresh(), r.modal("changepermissions", !0)
+ })
+ }, r.download = function () {
+ var e = r.singleSelection();
+ if (!r.selectionHas("dir")) return e ? r.apiMiddleware.download(e) : r.apiMiddleware.downloadMultiple(r.temps)
+ }, r.copy = function () {
+ var e = r.singleSelection();
+ if (e) {
+ var i = e.tempModel.name.trim();
+ if (r.fileNavigator.fileNameExists(i) && c(e)) return r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1;
+ if (!i) return r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1
+ }
+ r.apiMiddleware.copy(r.temps, n.selectedModalPath).then(function () {
+ r.fileNavigator.refresh(), r.modal("copy", !0)
+ })
+ }, r.compress = function () {
+ var e = r.temp.tempModel.name.trim();
+ return r.fileNavigator.fileNameExists(e) && c(r.temp) ? (r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) : e ? void r.apiMiddleware.compress(r.temps, e, n.selectedModalPath).then(function () {
+ if (r.fileNavigator.refresh(), !r.config.compressAsync) return r.modal("compress", !0);
+ r.apiMiddleware.apiHandler.asyncSuccess = !0
+ }, function () {
+ r.apiMiddleware.apiHandler.asyncSuccess = !1
+ }) : (r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1)
+ }, r.extract = function () {
+ var e = r.temp, i = r.temp.tempModel.name.trim();
+ return r.fileNavigator.fileNameExists(i) && c(r.temp) ? (r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1) : i ? void r.apiMiddleware.extract(e, i, n.selectedModalPath).then(function () {
+ if (r.fileNavigator.refresh(), !r.config.extractAsync) return r.modal("extract", !0);
+ r.apiMiddleware.apiHandler.asyncSuccess = !0
+ }, function () {
+ r.apiMiddleware.apiHandler.asyncSuccess = !1
+ }) : (r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1)
+ }, r.remove = function () {
+ r.apiMiddleware.remove(r.temps).then(function () {
+ r.fileNavigator.refresh(), r.modal("remove", !0)
+ })
+ }, r.move = function () {
+ var e = r.singleSelection() || r.temps[0];
+ if (e && c(e)) return r.apiMiddleware.apiHandler.error = a.instant("error_cannot_move_same_path"), !1;
+ r.apiMiddleware.move(r.temps, n.selectedModalPath).then(function () {
+ r.fileNavigator.refresh(), r.modal("move", !0)
+ })
+ }, r.rename = function () {
+ var e = r.singleSelection(), n = e.tempModel.name, i = e.tempModel.path.join("") === e.model.path.join("");
+ if (!n || i && r.fileNavigator.fileNameExists(n)) return r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename"), !1;
+ r.apiMiddleware.rename(e).then(function () {
+ r.fileNavigator.refresh(), r.modal("rename", !0)
+ })
+ }, r.createFolder = function () {
+ var e = r.singleSelection(), n = e.tempModel.name;
+ if (!n || r.fileNavigator.fileNameExists(n)) return r.apiMiddleware.apiHandler.error = a.instant("error_invalid_filename");
+ r.apiMiddleware.createFolder(e).then(function () {
+ r.fileNavigator.refresh(), r.modal("newfolder", !0)
+ })
+ }, r.addForUpload = function (e) {
+ r.uploadFileList = r.uploadFileList.concat(e), r.modal("uploadfile")
+ }, r.removeFromUpload = function (e) {
+ r.uploadFileList.splice(e, 1)
+ }, r.uploadFiles = function () {
+ r.apiMiddleware.upload(r.uploadFileList, r.fileNavigator.currentPath).then(function () {
+ r.fileNavigator.refresh(), r.uploadFileList = [], r.modal("uploadfile", !0)
+ }, function (e) {
+ var n = e.result && e.result.error || a.instant("error_uploading_files");
+ r.apiMiddleware.apiHandler.error = n
+ })
+ }, r.getUrl = function (e) {
+ return r.apiMiddleware.getUrl(e)
+ };
+ var c = function (e) {
+ var r = n.selectedModalPath.join("");
+ return (e && e.model.path.join("")) === 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
+ };
+ r.changeLanguage(p("lang")), r.isWindows = "Windows" === p("server"), r.fileNavigator.refresh()
+ }])
+}(angular), function (e) {
+ "use strict";
+ angular.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, 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();
+ if (n == r) return !0
+ })
+ }, r.openNavigator = function (r) {
+ e.fileNavigator.currentPath = r, e.fileNavigator.refresh(), e.modal("selector")
+ }, r.getSelectedPath = function () {
+ var n = "/" + r.selectedModalPath.filter(Boolean).join("/");
+ return e.singleSelection() && !e.singleSelection().isFolder() && (n += "/" + e.singleSelection().tempModel.name), n.replace(/\/\//, "/")
+ }
+ }])
+}(), function (e) {
+ "use strict";
+ var r = angular.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).assign;
+ n.bind("change", function () {
+ r.$apply(function () {
+ a(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})
+ })
+ })
+ }
+ }])
+}(), function (e) {
+ "use strict";
+ angular.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
+ })
+}(), function (e) {
+ "use strict";
+ e.module("FileManagerApp").factory("item", ["fileManagerConfig", "chmod", function (r, n) {
+ var i = function (r, i) {
+ var a = {
+ name: r && r.name || "",
+ path: i || [],
+ type: r && r.type || "file",
+ size: r && parseInt(r.size || 0),
+ date: function (e) {
+ var r = (e || "").toString().split(/[- :]/);
+ return new Date(r[0], r[1] - 1, r[2], r[3], r[4], r[5])
+ }(r && r.date),
+ perms: new n(r && r.rights),
+ content: r && r.content || "",
+ recursive: !1,
+ fullPath: function () {
+ return ("/" + this.path.filter(Boolean).join("/") + "/" + this.name).replace(/\/\//, "/")
+ }
+ };
+ this.error = "", this.processing = !1, this.model = e.copy(a), this.tempModel = e.copy(a)
+ };
+ 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.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 = angular.module("FileManagerApp");
+ r.filter("strLimit", ["$filter", function (e) {
+ return function (r, n, i) {
+ return r.length <= n ? r : e("limitTo")(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
+ }
+ }])
+}(), function (e) {
+ "use strict";
+ e.module("FileManagerApp").provider("fileManagerConfig", function () {
+ var r = {
+ appName: "angular-filemanager v1.5",
+ defaultLang: "zh_cn",
+ listUrl: "/filemanager/list",
+ uploadUrl: "/filemanager/upload",
+ renameUrl: "/filemanager/rename",
+ copyUrl: "/filemanager/copy",
+ moveUrl: "/filemanager/move",
+ removeUrl: "/filemanager/remove",
+ editUrl: "/filemanager/edit",
+ getContentUrl: "/filemanager/content",
+ createFolderUrl: "/filemanager/folder",
+ downloadFileUrl: "/filemanager/download",
+ downloadMultipleUrl: "/filemanager/multidownload",
+ compressUrl: "/filemanager/compress",
+ extractUrl: "/filemanager/extract",
+ permissionsUrl: "/filemanager/permission",
+ basePath: "/",
+ searchForm: !0,
+ sidebar: !0,
+ breadcrumb: !0,
+ allowedActions: {
+ upload: !0,
+ rename: !0,
+ move: !0,
+ copy: !0,
+ edit: !0,
+ changePermissions: !0,
+ compress: !0,
+ compressChooseName: !0,
+ extract: !0,
+ download: !0,
+ downloadMultiple: !0,
+ preview: !0,
+ remove: !0,
+ createFolder: !0,
+ pickFiles: !1,
+ pickFolders: !1
+ },
+ multipleDownloadFileName: "efo-download.zip",
+ filterFileExtensions: [],
+ showExtensionIcons: !0,
+ showSizeForDirectories: !0,
+ useBinarySizePrefixes: !1,
+ downloadFilesByAjax: !0,
+ previewImagesInModal: !0,
+ enablePermissionsRecursive: !0,
+ compressAsync: !1,
+ extractAsync: !1,
+ pickCallback: null,
+ 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,
+ 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";
+ angular.module("FileManagerApp").config(["$translateProvider", function (e) {
+ e.useSanitizeValueStrategy(null), e.translations("en", {
+ filemanager: "File Manager",
+ language: "Language",
+ english: "English",
+ spanish: "Spanish",
+ portuguese: "Portuguese",
+ french: "French",
+ german: "German",
+ hebrew: "Hebrew",
+ italian: "Italian",
+ slovak: "Slovak",
+ chinese_tw: "Traditional Chinese",
+ chinese_cn: "Simple Chinese",
+ russian: "Russian",
+ ukrainian: "Ukrainian",
+ turkish: "Turkish",
+ persian: "Persian",
+ polish: "Polish",
+ dutch: "Dutch",
+ confirm: "Confirm",
+ cancel: "Cancel",
+ close: "Close",
+ upload_files: "Upload files",
+ files_will_uploaded_to: "Files will be uploaded to",
+ select_files: "Select files",
+ uploading: "Uploading",
+ permissions: "Permissions",
+ select_destination_folder: "Select the destination folder",
+ source: "Source",
+ destination: "Destination",
+ copy_file: "Copy file",
+ sure_to_delete: "Are you sure to delete",
+ change_name_move: "Change name / move",
+ enter_new_name_for: "Enter new name for",
+ extract_item: "Extract item",
+ extraction_started: "Extraction started in a background process",
+ compression_started: "Compression started in a background process",
+ enter_folder_name_for_extraction: "Enter the folder name for the extraction of",
+ enter_file_name_for_compression: "Enter the file name for the compression of",
+ toggle_fullscreen: "Toggle fullscreen",
+ edit_file: "Edit file",
+ file_content: "File content",
+ loading: "Loading",
+ search: "Search",
+ create_folder: "Create folder",
+ create: "Create",
+ folder_name: "Folder name",
+ upload: "Upload",
+ change_permissions: "Change permissions",
+ change: "Change",
+ details: "Details",
+ icons: "Icons",
+ list: "List",
+ name: "Name",
+ size: "Size",
+ actions: "Actions",
+ date: "Date",
+ selection: "Selection",
+ no_files_in_folder: "No files in this folder",
+ no_folders_in_folder: "This folder not contains children folders",
+ select_this: "Select this",
+ go_back: "Go back",
+ wait: "Wait",
+ move: "Move",
+ download: "Download",
+ view_item: "View item",
+ remove: "Delete",
+ edit: "Edit",
+ copy: "Copy",
+ rename: "Rename",
+ extract: "Extract",
+ compress: "Compress",
+ error_invalid_filename: "Invalid filename or already exists, specify another name",
+ error_modifying: "An error occurred modifying the file",
+ error_deleting: "An error occurred deleting the file or folder",
+ error_renaming: "An error occurred renaming the file",
+ error_copying: "An error occurred copying the file",
+ error_compressing: "An error occurred compressing the file or folder",
+ error_extracting: "An error occurred extracting the file",
+ error_creating_folder: "An error occurred creating the folder",
+ error_getting_content: "An error occurred getting the content of the file",
+ error_changing_perms: "An error occurred changing the permissions of the file",
+ error_uploading_files: "An error occurred uploading files",
+ sure_to_start_compression_with: "Are you sure to compress",
+ owner: "Owner",
+ group: "Group",
+ others: "Others",
+ read: "Read",
+ write: "Write",
+ exec: "Exec",
+ original: "Original",
+ changes: "Changes",
+ recursive: "Recursive",
+ preview: "Item preview",
+ open: "Open",
+ these_elements: "these {{total}} elements",
+ new_folder: "New folder",
+ download_as_zip: "Download as ZIP"
+ }), e.translations("nl", {
+ filemanager: "Bestand beheerder",
+ language: "Taal",
+ english: "Engels",
+ spanish: "Spaans",
+ portuguese: "Portugees",
+ french: "Frans",
+ german: "Duits",
+ hebrew: "Hebrews",
+ slovak: "Slowakije",
+ chinese: "Chinees",
+ russian: "Russisch",
+ ukrainian: "Oekraïens",
+ turkish: "Turks",
+ persian: "Perzisch",
+ confirm: "Bevestigen",
+ cancel: "Annuleren",
+ close: "Sluiten",
+ upload_files: "Bestanden uploaden",
+ files_will_uploaded_to: "Bestanden worden geüpload naar",
+ select_files: "Selecteer bestanden",
+ uploading: "Uploaden",
+ permissions: "Rechten",
+ select_destination_folder: "Selecteer de map van bestemming",
+ source: "Bron",
+ destination: "Doel",
+ copy_file: "Kopieer bestand",
+ sure_to_delete: "Weet je zeker dat je wilt verwijderen",
+ change_name_move: "Hernoemen / verplaatsen",
+ enter_new_name_for: "Typ een nieuwe naam voor",
+ extract_item: "Uitpakken",
+ extraction_started: "Uitpakken gestart als achtergrond proces",
+ compression_started: "Inpakken gestart als achtergrond proces",
+ enter_folder_name_for_extraction: "Typ een map naar voor het uitpakken van",
+ enter_file_name_for_compression: "Typ een bestandsnaam voor het inpakken van",
+ toggle_fullscreen: "Volledigscherm",
+ edit_file: "Bewerk bestand",
+ file_content: "Bestandsinhoud",
+ loading: "Laden",
+ search: "Zoeken",
+ create_folder: "Maak map",
+ create: "Maak",
+ folder_name: "Map naam",
+ upload: "Uploaden",
+ change_permissions: "Rechten aanpassen",
+ change: "Aanpassen",
+ details: "Details",
+ icons: "Iconen",
+ list: "Lijst",
+ name: "Naam",
+ size: "Grootte",
+ actions: "Acties",
+ date: "Datum",
+ no_files_in_folder: "Geen bestanden in deze map",
+ no_folders_in_folder: "Deze map bevat geen submappen",
+ select_this: "Selecteer dit",
+ go_back: "Ga terug",
+ wait: "Wacht",
+ move: "Verplaats",
+ download: "Download",
+ view_item: "Bekijk item",
+ remove: "Verwijderen",
+ edit: "Bewerken",
+ copy: "Kopiëren",
+ rename: "Hernoemen",
+ extract: "Uitpakken",
+ compress: "Inpakken",
+ error_invalid_filename: "Ongeldige bestandsnaam of bestand al aanwezig, kies een andere naam",
+ error_modifying: "Er is een fout opgetreden met het bewerken van het bestand",
+ error_deleting: "Er is een fout opgetreden tijdens het verwijderen van de bestand of map",
+ error_renaming: "Er is een fout opgetreden tijdens het hernoemen van het bestand",
+ error_copying: "Er is een fout opgetreden tijdens het kopiëren van het bestand",
+ error_compressing: "Er is een fout opgetreden tijdens het inpakken van het bestand of map",
+ error_extracting: "Er is een fout opgetreden tijdens het uitpakken van het bestand",
+ error_creating_folder: "Er is een fout opgetreden tijdens het maken van de map",
+ error_getting_content: "Er is een fout opgetreden tijdens het ophalen van de inhoud van het bestand",
+ error_changing_perms: "Er is een fout opgetreden tijdens het aanpassen van de rechten van het bestand",
+ error_uploading_files: "Er is een fout opgetreden tijdens het uploaden van de bestanden",
+ sure_to_start_compression_with: "Weet je zeker dat je dit wilt inpakken",
+ owner: "Eigenaar",
+ group: "Groep",
+ others: "Andere",
+ read: "Lees",
+ write: "Schrijf",
+ exec: "Uitvoeren",
+ original: "Origineel",
+ changes: "Aanpassingen",
+ recursive: "Recursieve",
+ preview: "Item bekijken",
+ open: "Openen",
+ these_elements: "Deze {{total}} elementen",
+ new_folder: "Nieuwe map",
+ download_as_zip: "Download als ZIP"
+ }), e.translations("he", {
+ filemanager: "מנהל קבצים",
+ 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: "פתח",
+ new_folder: "תיקיה חדשה",
+ download_as_zip: "להוריד כמו"
+ }), e.translations("pt", {
+ filemanager: "Gerenciador de arquivos",
+ language: "Língua",
+ english: "Inglês",
+ spanish: "Espanhol",
+ portuguese: "Portugues",
+ french: "Francês",
+ german: "Alemão",
+ hebrew: "Hebraico",
+ italian: "Italiano",
+ slovak: "Eslovaco",
+ chinese_tw: "Tradicional Chinesa",
+ chinese_cn: "Chinês Simplificado",
+ russian: "Russo",
+ ukrainian: "Ucraniano",
+ turkish: "Turco",
+ persian: "Persa",
+ polish: "Polonês",
+ confirm: "Confirmar",
+ cancel: "Cancelar",
+ close: "Fechar",
+ upload_files: "Carregar arquivos",
+ files_will_uploaded_to: "Os arquivos serão enviados para",
+ select_files: "Selecione os arquivos",
+ uploading: "Carregar",
+ permissions: "Autorizações",
+ select_destination_folder: "Selecione a pasta de destino",
+ source: "Origem",
+ destination: "Destino",
+ copy_file: "Copiar arquivo",
+ sure_to_delete: "Tem certeza de que deseja apagar",
+ change_name_move: "Renomear / mudança",
+ enter_new_name_for: "Digite o novo nome para",
+ extract_item: "Extrair arquivo",
+ extraction_started: "A extração começou em um processo em segundo plano",
+ compression_started: "A compressão começou em um processo em segundo plano",
+ enter_folder_name_for_extraction: "Digite o nome da pasta para a extração de",
+ enter_file_name_for_compression: "Digite o nome do arquivo para a compressão de",
+ toggle_fullscreen: "Ativar/desativar tela cheia",
+ edit_file: "Editar arquivo",
+ file_content: "Conteúdo do arquivo",
+ loading: "Carregando",
+ search: "Localizar",
+ create_folder: "Criar Pasta",
+ create: "Criar",
+ folder_name: "Nome da pasta",
+ upload: "Fazer",
+ change_permissions: "Alterar permissões",
+ change: "Alterar",
+ details: "Detalhes",
+ icons: "Icones",
+ list: "Lista",
+ name: "Nome",
+ size: "Tamanho",
+ actions: "Ações",
+ date: "Data",
+ selection: "Seleção",
+ no_files_in_folder: "Não há arquivos nesta pasta",
+ no_folders_in_folder: "Esta pasta não contém subpastas",
+ select_this: "Selecione esta",
+ go_back: "Voltar",
+ wait: "Espere",
+ move: "Mover",
+ download: "Baixar",
+ view_item: "Veja o arquivo",
+ remove: "Excluir",
+ edit: "Editar",
+ copy: "Copiar",
+ rename: "Renomear",
+ extract: "Extrair",
+ compress: "Comprimir",
+ error_invalid_filename: "Nome do arquivo inválido ou nome de arquivo já existe, especifique outro nome",
+ error_modifying: "Ocorreu um erro ao modificar o arquivo",
+ error_deleting: "Ocorreu um erro ao excluir o arquivo ou pasta",
+ error_renaming: "Ocorreu um erro ao mudar o nome do arquivo",
+ error_copying: "Ocorreu um erro ao copiar o arquivo",
+ error_compressing: "Ocorreu um erro ao comprimir o arquivo ou pasta",
+ error_extracting: "Ocorreu um erro ao extrair o arquivo",
+ error_creating_folder: "Ocorreu um erro ao criar a pasta",
+ error_getting_content: "Ocorreu um erro ao obter o conteúdo do arquivo",
+ error_changing_perms: "Ocorreu um erro ao alterar as permissões do arquivo",
+ error_uploading_files: "Ocorreu um erro upload de arquivos",
+ sure_to_start_compression_with: "Tem certeza que deseja comprimir",
+ owner: "Proprietário",
+ group: "Grupo",
+ others: "Outros",
+ read: "Leitura",
+ write: "Escrita ",
+ exec: "Execução",
+ original: "Original",
+ changes: "Mudanças",
+ recursive: "Recursiva",
+ preview: "Visualização",
+ open: "Abrir",
+ these_elements: "estes {{total}} elements",
+ new_folder: "Nova pasta",
+ download_as_zip: "Download como ZIP"
+ }), e.translations("es", {
+ filemanager: "Administrador de archivos",
+ language: "Idioma",
+ english: "Ingles",
+ spanish: "Español",
+ portuguese: "Portugues",
+ french: "Francés",
+ german: "Alemán",
+ hebrew: "Hebreo",
+ italian: "Italiano",
+ slovak: "Eslovaco",
+ chinese_tw: "Tradicional China",
+ chinese_cn: "Chino Simplificado",
+ russian: "Ruso",
+ ukrainian: "Ucraniano",
+ turkish: "Turco",
+ persian: "Persa",
+ polish: "Polaco",
+ confirm: "Confirmar",
+ cancel: "Cancelar",
+ close: "Cerrar",
+ upload_files: "Subir archivos",
+ files_will_uploaded_to: "Los archivos seran subidos a",
+ select_files: "Seleccione los archivos",
+ uploading: "Subiendo",
+ permissions: "Permisos",
+ select_destination_folder: "Seleccione la carpeta de destino",
+ source: "Origen",
+ destination: "Destino",
+ copy_file: "Copiar archivo",
+ sure_to_delete: "Esta seguro que desea eliminar",
+ change_name_move: "Renombrar / mover",
+ enter_new_name_for: "Ingrese el nuevo nombre para",
+ extract_item: "Extraer archivo",
+ extraction_started: "La extraccion ha comenzado en un proceso de segundo plano",
+ compression_started: "La compresion ha comenzado en un proceso de segundo plano",
+ enter_folder_name_for_extraction: "Ingrese el nombre de la carpeta para la extraccion de",
+ enter_file_name_for_compression: "Ingrese el nombre del archivo para la compresion de",
+ toggle_fullscreen: "Activar/Desactivar pantalla completa",
+ edit_file: "Editar archivo",
+ file_content: "Contenido del archivo",
+ loading: "Cargando",
+ search: "Buscar",
+ create_folder: "Crear carpeta",
+ create: "Crear",
+ folder_name: "Nombre de la carpeta",
+ upload: "Subir",
+ change_permissions: "Cambiar permisos",
+ change: "Cambiar",
+ details: "Detalles",
+ icons: "Iconos",
+ list: "Lista",
+ name: "Nombre",
+ size: "Tamaño",
+ actions: "Acciones",
+ date: "Fecha",
+ selection: "Selección",
+ no_files_in_folder: "No hay archivos en esta carpeta",
+ no_folders_in_folder: "Esta carpeta no contiene sub-carpetas",
+ select_this: "Seleccionar esta",
+ go_back: "Volver",
+ wait: "Espere",
+ move: "Mover",
+ download: "Descargar",
+ view_item: "Ver archivo",
+ remove: "Eliminar",
+ edit: "Editar",
+ copy: "Copiar",
+ rename: "Renombrar",
+ extract: "Extraer",
+ compress: "Comprimir",
+ error_invalid_filename: "El nombre del archivo es invalido o ya existe",
+ error_modifying: "Ocurrio un error al intentar modificar el archivo",
+ error_deleting: "Ocurrio un error al intentar eliminar el archivo",
+ error_renaming: "Ocurrio un error al intentar renombrar el archivo",
+ error_copying: "Ocurrio un error al intentar copiar el archivo",
+ error_compressing: "Ocurrio un error al intentar comprimir el archivo",
+ error_extracting: "Ocurrio un error al intentar extraer el archivo",
+ error_creating_folder: "Ocurrio un error al intentar crear la carpeta",
+ error_getting_content: "Ocurrio un error al obtener el contenido del archivo",
+ error_changing_perms: "Ocurrio un error al cambiar los permisos del archivo",
+ error_uploading_files: "Ocurrio un error al subir archivos",
+ sure_to_start_compression_with: "Esta seguro que desea comprimir",
+ owner: "Propietario",
+ group: "Grupo",
+ others: "Otros",
+ read: "Lectura",
+ write: "Escritura",
+ exec: "Ejecucion",
+ original: "Original",
+ changes: "Cambios",
+ recursive: "Recursivo",
+ preview: "Vista previa",
+ open: "Abrir",
+ these_elements: "estos {{total}} elementos",
+ new_folder: "Nueva carpeta",
+ download_as_zip: "Descargar como ZIP"
+ }), e.translations("fr", {
+ filemanager: "Gestionnaire de fichier",
+ language: "Langue",
+ english: "Anglais",
+ spanish: "Espagnol",
+ portuguese: "Portugais",
+ french: "Français",
+ german: "Allemand",
+ hebrew: "Hébreu",
+ italian: "Italien",
+ slovak: "Slovaque",
+ chinese_tw: "Traditionnelle Chinoise",
+ chinese_cn: "Chinois Simplifié",
+ russian: "Russe",
+ ukrainian: "Ukrainien",
+ turkish: "Turc",
+ persian: "Persan",
+ polish: "Polonais",
+ confirm: "Confirmer",
+ cancel: "Annuler",
+ close: "Fermer",
+ upload_files: "Télécharger des fichiers",
+ files_will_uploaded_to: "Les fichiers seront uploadé dans",
+ select_files: "Sélectionnez les fichiers",
+ uploading: "Upload en cours",
+ permissions: "Permissions",
+ select_destination_folder: "Sélectionné le dossier de destination",
+ source: "Source",
+ destination: "Destination",
+ copy_file: "Copier le fichier",
+ sure_to_delete: "Êtes-vous sûr de vouloir supprimer",
+ change_name_move: "Renommer / Déplacer",
+ enter_new_name_for: "Entrer le nouveau nom pour",
+ extract_item: "Extraires les éléments",
+ extraction_started: "L'extraction a démarré en tâche de fond",
+ compression_started: "La compression a démarré en tâche de fond",
+ enter_folder_name_for_extraction: "Entrer le nom du dossier pour l'extraction de",
+ enter_file_name_for_compression: "Entrez le nom de fichier pour la compression de",
+ toggle_fullscreen: "Basculer en plein écran",
+ edit_file: "Éditer le fichier",
+ file_content: "Contenu du fichier",
+ loading: "Chargement en cours",
+ search: "Recherche",
+ create_folder: "Créer un dossier",
+ create: "Créer",
+ folder_name: "Nom du dossier",
+ upload: "Upload",
+ change_permissions: "Changer les permissions",
+ change: "Changer",
+ details: "Details",
+ icons: "Icons",
+ list: "Liste",
+ name: "Nom",
+ size: "Taille",
+ actions: "Actions",
+ date: "Date",
+ selection: "Sélection",
+ no_files_in_folder: "Aucun fichier dans ce dossier",
+ no_folders_in_folder: "Ce dossier ne contiens pas de dossier",
+ select_this: "Sélectionner",
+ go_back: "Retour",
+ wait: "Patienter",
+ move: "Déplacer",
+ download: "Télécharger",
+ view_item: "Voir l'élément",
+ remove: "Supprimer",
+ edit: "Éditer",
+ copy: "Copier",
+ rename: "Renommer",
+ extract: "Extraire",
+ compress: "Compresser",
+ error_invalid_filename: "Nom de fichier invalide ou déjà existant, merci de spécifier un autre nom",
+ error_modifying: "Une erreur est survenue pendant la modification du fichier",
+ error_deleting: "Une erreur est survenue pendant la suppression du fichier ou du dossier",
+ error_renaming: "Une erreur est survenue pendant le renommage du fichier",
+ error_copying: "Une erreur est survenue pendant la copie du fichier",
+ error_compressing: "Une erreur est survenue pendant la compression du fichier ou du dossier",
+ error_extracting: "Une erreur est survenue pendant l'extraction du fichier",
+ error_creating_folder: "Une erreur est survenue pendant la création du dossier",
+ error_getting_content: "Une erreur est survenue pendant la récupération du contenu du fichier",
+ error_changing_perms: "Une erreur est survenue pendant le changement des permissions du fichier",
+ error_uploading_files: "Une erreur est survenue pendant l'upload des fichiers",
+ sure_to_start_compression_with: "Êtes-vous sûre de vouloir compresser",
+ owner: "Propriétaire",
+ group: "Groupe",
+ others: "Autres",
+ read: "Lecture",
+ write: "Écriture",
+ exec: "Éxécution",
+ original: "Original",
+ changes: "Modifications",
+ recursive: "Récursif",
+ preview: "Aperçu",
+ open: "Ouvrir",
+ these_elements: "ces {{total}} éléments",
+ new_folder: "Nouveau dossier",
+ download_as_zip: "Télécharger comme ZIP"
+ }), e.translations("de", {
+ filemanager: "Dateimanager",
+ language: "Sprache",
+ english: "Englisch",
+ spanish: "Spanisch",
+ portuguese: "Portugiesisch",
+ french: "Französisch",
+ german: "Deutsch",
+ hebrew: "Hebräisch",
+ italian: "Italienisch",
+ slovak: "Slowakisch",
+ chinese_tw: "Traditionelles Chinesisch",
+ chinese_cn: "Vereinfachtes Chinesisch",
+ russian: "Russisch",
+ ukrainian: "Ukrainisch",
+ turkish: "Türkisch",
+ persian: "Persisch",
+ polish: "Polnisch",
+ confirm: "Bestätigen",
+ cancel: "Abbrechen",
+ close: "Schließen",
+ upload_files: "Hochladen von Dateien",
+ files_will_uploaded_to: "Dateien werden hochgeladen nach",
+ select_files: "Wählen Sie die Dateien",
+ uploading: "Lade hoch",
+ permissions: "Berechtigungen",
+ select_destination_folder: "Wählen Sie einen Zielordner",
+ source: "Quelle",
+ destination: "Ziel",
+ copy_file: "Datei kopieren",
+ sure_to_delete: "Sind Sie sicher, dass Sie die Datei löschen möchten?",
+ change_name_move: "Namen ändern / verschieben",
+ enter_new_name_for: "Geben Sie den neuen Namen ein für",
+ extract_item: "Archiv entpacken",
+ extraction_started: "Entpacken hat im Hintergrund begonnen",
+ compression_started: "Komprimierung hat im Hintergrund begonnen",
+ enter_folder_name_for_extraction: "Geben Sie den Verzeichnisnamen für die Entpackung an von",
+ enter_file_name_for_compression: "Geben Sie den Dateinamen für die Kompression an von",
+ toggle_fullscreen: "Vollbild umschalten",
+ edit_file: "Datei bearbeiten",
+ file_content: "Dateiinhalt",
+ loading: "Lade",
+ search: "Suche",
+ create_folder: "Ordner erstellen",
+ create: "Erstellen",
+ folder_name: "Verzeichnisname",
+ upload: "Hochladen",
+ change_permissions: "Berechtigungen ändern",
+ change: "Ändern",
+ details: "Details",
+ icons: "Symbolansicht",
+ list: "Listenansicht",
+ name: "Name",
+ size: "Größe",
+ actions: "Aktionen",
+ date: "Datum",
+ selection: "Auswahl",
+ no_files_in_folder: "Keine Dateien in diesem Ordner",
+ no_folders_in_folder: "Dieser Ordner enthält keine Unterordner",
+ select_this: "Auswählen",
+ go_back: "Zurück",
+ wait: "Warte",
+ move: "Verschieben",
+ download: "Herunterladen",
+ view_item: "Datei ansehen",
+ remove: "Löschen",
+ edit: "Bearbeiten",
+ copy: "Kopieren",
+ rename: "Umbenennen",
+ extract: "Entpacken",
+ compress: "Komprimieren",
+ error_invalid_filename: "Ungültiger Dateiname oder existiert bereits",
+ error_modifying: "Beim Bearbeiten der Datei ist ein Fehler aufgetreten",
+ error_deleting: "Beim Löschen der Datei oder des Ordners ist ein Fehler aufgetreten",
+ error_renaming: "Beim Umbennenen der Datei ist ein Fehler aufgetreten",
+ error_copying: "Beim Kopieren der Datei ist ein Fehler aufgetreten",
+ error_compressing: "Beim Komprimieren der Datei oder des Ordners ist ein Fehler aufgetreten",
+ error_extracting: "Beim Entpacken der Datei ist ein Fehler aufgetreten",
+ error_creating_folder: "Beim Erstellen des Ordners ist ein Fehler aufgetreten",
+ error_getting_content: "Beim Laden des Dateiinhalts ist ein Fehler aufgetreten",
+ error_changing_perms: "Beim Ändern der Dateiberechtigungen ist ein Fehler aufgetreten",
+ error_uploading_files: "Beim Hochladen der Dateien ist ein Fehler aufgetreten",
+ sure_to_start_compression_with: "Möchten Sie die Datei wirklich komprimieren?",
+ owner: "Besitzer",
+ group: "Gruppe",
+ others: "Andere",
+ read: "Lesen",
+ write: "Schreiben",
+ exec: "Ausführen",
+ original: "Original",
+ changes: "Änderungen",
+ recursive: "Rekursiv",
+ preview: "Dateivorschau",
+ open: "Öffnen",
+ these_elements: "diese {{total}} elemente",
+ new_folder: "Neuer ordner",
+ download_as_zip: "Download als ZIP"
+ }), e.translations("sk", {
+ filemanager: "Správca súborov",
+ language: "Jazyk",
+ english: "Angličtina",
+ spanish: "Španielčina",
+ portuguese: "Portugalčina",
+ french: "Francúzština",
+ german: "Nemčina",
+ hebrew: "Hebrejčina",
+ italian: "Italština",
+ slovak: "Slovenčina",
+ chinese_tw: "Tradičná Čínska",
+ chinese_cn: "Zjednodušená Čínština",
+ russian: "Ruský",
+ ukrainian: "Ukrajinský",
+ turkish: "Turecký",
+ persian: "Perzský",
+ polish: "Poľský",
+ confirm: "Potvrdiť",
+ cancel: "Zrušiť",
+ close: "Zavrieť",
+ upload_files: "Nahrávať súbory",
+ files_will_uploaded_to: "Súbory budú nahrané do",
+ select_files: "Vybrať súbory",
+ uploading: "Nahrávanie",
+ permissions: "Oprávnenia",
+ select_destination_folder: "Vyberte cieľový príečinok",
+ source: "Zdroj",
+ destination: "Cieľ",
+ copy_file: "Kopírovať súbor",
+ sure_to_delete: "Ste si istý, že chcete vymazať",
+ change_name_move: "Premenovať / Premiestniť",
+ enter_new_name_for: "Zadajte nové meno pre",
+ extract_item: "Rozbaliť položku",
+ extraction_started: "Rozbaľovanie začalo v procese na pozadí",
+ compression_started: "Kompresia začala v procese na pzoadí",
+ enter_folder_name_for_extraction: "Zadajte názov priečinka na rozbalenie",
+ enter_file_name_for_compression: "Zadajte názov súboru pre kompresiu",
+ toggle_fullscreen: "Prepnúť režim na celú obrazovku",
+ edit_file: "Upraviť súbor",
+ file_content: "Obsah súboru",
+ loading: "Načítavanie",
+ search: "Hľadať",
+ create_folder: "Vytvoriť priečinok",
+ create: "Vytvoriť",
+ folder_name: "Názov priećinka",
+ upload: "Nahrať",
+ change_permissions: "Zmeniť oprávnenia",
+ change: "Zmeniť",
+ details: "Podrobnosti",
+ icons: "Ikony",
+ list: "Zoznam",
+ name: "Meno",
+ size: "Veľkosť",
+ actions: "Akcie",
+ date: "Dátum",
+ selection: "Výber",
+ no_files_in_folder: "V tom to priečinku nie sú žiadne súbory",
+ no_folders_in_folder: "Tento priečinok neobsahuje žiadne ďalšie priećinky",
+ select_this: "Vybrať tento",
+ go_back: "Ísť späť",
+ wait: "Počkajte",
+ move: "Presunúť",
+ download: "Stiahnuť",
+ view_item: "Zobraziť položku",
+ remove: "Vymazať",
+ edit: "Upraviť",
+ copy: "Kopírovať",
+ rename: "Premenovať",
+ extract: "Rozbaliť",
+ compress: "Komprimovať",
+ error_invalid_filename: "Neplatné alebo duplicitné meno súboru, vyberte iné meno",
+ error_modifying: "Vyskytla sa chyba pri upravovaní súboru",
+ error_deleting: "Vyskytla sa chyba pri mazaní súboru alebo priečinku",
+ error_renaming: "Vyskytla sa chyba pri premenovaní súboru",
+ error_copying: "Vyskytla sa chyba pri kopírovaní súboru",
+ error_compressing: "Vyskytla sa chyba pri komprimovaní súboru alebo priečinka",
+ error_extracting: "Vyskytla sa chyba pri rozbaľovaní súboru",
+ error_creating_folder: "Vyskytla sa chyba pri vytváraní priečinku",
+ error_getting_content: "Vyskytla sa chyba pri získavaní obsahu súboru",
+ error_changing_perms: "Vyskytla sa chyba pri zmene oprávnení súboru",
+ error_uploading_files: "Vyskytla sa chyba pri nahrávaní súborov",
+ sure_to_start_compression_with: "Ste si istý, že chcete komprimovať",
+ owner: "Vlastník",
+ group: "Skupina",
+ others: "Ostatní",
+ read: "Čítanie",
+ write: "Zapisovanie",
+ exec: "Spúštanie",
+ original: "Originál",
+ changes: "Zmeny",
+ recursive: "Rekurzívne",
+ preview: "Náhľad položky",
+ open: "Otvoriť",
+ these_elements: "týchto {{total}} prvkov",
+ new_folder: "Nový priečinok",
+ download_as_zip: "Stiahnuť ako ZIP"
+ }), e.translations("zh_cn", {
+ filemanager: "文档管理器",
+ 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"
+ }), e.translations("zh_tw", {
+ filemanager: "檔案管理員",
+ 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下載"
+ }), e.translations("ru", {
+ filemanager: "Файловый менеджер",
+ 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: "Download as ZIP"
+ }), e.translations("ua", {
+ filemanager: "Файловий менеджер",
+ language: "Мова",
+ english: "Англійська",
+ spanish: "Іспанська",
+ portuguese: "Португальська",
+ french: "Французька",
+ german: "Німецька",
+ hebrew: "Хінді",
+ italian: "італійський",
+ slovak: "Словацька",
+ chinese_tw: "традиційний Китайський",
+ chinese_cn: "Cпрощена Китайська",
+ 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: "Download as ZIP"
+ }), e.translations("tr", {
+ filemanager: "Dosya Yöneticisi",
+ language: "Dil",
+ english: "İngilizce",
+ spanish: "İspanyolca",
+ portuguese: "Portekizce",
+ french: "Fransızca",
+ german: "Almanca",
+ hebrew: "İbranice",
+ italian: "İtalyanca",
+ slovak: "Slovakça",
+ chinese_tw: "Geleneksel Çin",
+ chinese_cn: "Basitleştirilmiş Çince",
+ russian: "Rusça",
+ ukrainian: "Ukraynaca",
+ turkish: "Türkçe",
+ persian: "Farsça",
+ polish: "Lehçe",
+ confirm: "Onayla",
+ cancel: "İptal Et",
+ close: "Kapat",
+ upload_files: "Dosya yükle",
+ files_will_uploaded_to: "Dosyalar yüklenecektir.",
+ select_files: "Dosya Seç",
+ uploading: "Yükleniyor",
+ permissions: "İzinler",
+ select_destination_folder: "Hedef klasör seçin",
+ source: "Kaynak",
+ destination: "Hedef",
+ copy_file: "Dosyayı kopyala",
+ sure_to_delete: "Silmek istediğinden emin misin",
+ change_name_move: "İsmini değiştir / taşı",
+ enter_new_name_for: "Yeni ad girin",
+ extract_item: "Dosya çıkar",
+ extraction_started: "Çıkarma işlemi arkaplanda devam ediyor",
+ compression_started: "Sıkıştırma işlemi arkaplanda başladı",
+ enter_folder_name_for_extraction: "Çıkarılması için klasör adı girin",
+ enter_file_name_for_compression: "Sıkıştırılması için dosya adı girin",
+ toggle_fullscreen: "Tam ekran moduna geç",
+ edit_file: "Dosyayı düzenle",
+ file_content: "Dosya içeriği",
+ loading: "Yükleniyor",
+ search: "Ara",
+ create_folder: "Klasör oluştur",
+ create: "Oluştur",
+ folder_name: "Klasör adı",
+ upload: "Yükle",
+ change_permissions: "İzinleri değiştir",
+ change: "Değiştir",
+ details: "Detaylar",
+ icons: "simgeler",
+ list: "Liste",
+ name: "Adı",
+ size: "Boyutu",
+ actions: "İşlemler",
+ date: "Tarih",
+ selection: "Seçim",
+ no_files_in_folder: "Klasörde hiç dosya yok",
+ no_folders_in_folder: "Bu klasör alt klasör içermez",
+ select_this: "Bunu seç",
+ go_back: "Geri git",
+ wait: "Bekle",
+ move: "Taşı",
+ download: "İndir",
+ view_item: "Dosyayı görüntüle",
+ remove: "Sil",
+ edit: "Düzenle",
+ copy: "Kopyala",
+ rename: "Yeniden Adlandır",
+ extract: "Çıkart",
+ compress: "Sıkıştır",
+ error_invalid_filename: "Geçersiz dosya adı, bu dosya adına sahip dosya mevcut",
+ error_modifying: "Dosya düzenlenirken bir hata oluştu",
+ error_deleting: "Klasör veya dosya silinirken bir hata oluştu",
+ error_renaming: "Dosya yeniden adlandırılırken bir hata oluştu",
+ error_copying: "Dosya kopyalanırken bir hata oluştu",
+ error_compressing: "Dosya veya klasör sıkıştırılırken bir hata oluştu",
+ error_extracting: "Çıkartılırken bir hata oluştu",
+ error_creating_folder: "Klasör oluşturulurken bir hata oluştu",
+ error_getting_content: "Dosya detayları alınırken bir hata oluştu",
+ error_changing_perms: "Dosyanın izini değiştirilirken bir hata oluştu",
+ error_uploading_files: "Dosyalar yüklenirken bir hata oluştu",
+ sure_to_start_compression_with: "Sıkıştırmak istediğinden emin misin",
+ owner: "Sahip",
+ group: "Grup",
+ others: "Diğerleri",
+ read: "Okuma",
+ write: "Yazma",
+ exec: "Gerçekleştir",
+ original: "Orjinal",
+ changes: "Değişiklikler",
+ recursive: "Yinemeli",
+ preview: "Dosyayı önizle",
+ open: "Aç",
+ these_elements: "{{total}} eleman",
+ new_folder: "Yeni Klasör",
+ download_as_zip: "ZIP olarak indir"
+ }), e.translations("fa", {
+ filemanager: "مدیریت فایل ها",
+ 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: "به عنوان فایل فشرده دانلود شود"
+ }), e.translations("pl", {
+ filemanager: "Menadżer plików",
+ language: "Język",
+ english: "Angielski",
+ spanish: "Hiszpański",
+ portuguese: "Portugalski",
+ french: "Francuski",
+ german: "Niemiecki",
+ hebrew: "Hebrajski",
+ italian: "Włoski",
+ slovak: "Słowacki",
+ chinese_tw: "Tradycyjny Chiński",
+ chinese_cn: "Chiński Uproszczony",
+ russian: "Rosyjski",
+ ukrainian: "Ukraiński",
+ turkish: "Turecki",
+ persian: "Perski",
+ polish: "Polski",
+ confirm: "Potwierdź",
+ cancel: "Anuluj",
+ close: "Zamknij",
+ upload_files: "Wgraj pliki",
+ files_will_uploaded_to: "Pliki będą umieszczone w katalogu",
+ select_files: "Wybierz pliki",
+ uploading: "Ładowanie",
+ permissions: "Uprawnienia",
+ select_destination_folder: "Wybierz folder docelowy",
+ source: "Źródło",
+ destination: "Cel",
+ copy_file: "Kopiuj plik",
+ sure_to_delete: "Jesteś pewien, że chcesz skasować",
+ change_name_move: "Zmień nazwę / przenieś",
+ enter_new_name_for: "Wpisz nową nazwę dla",
+ extract_item: "Rozpakuj element",
+ extraction_started: "Rozpakowywanie rozpoczęło się w tle",
+ compression_started: "Kompresowanie rozpoczęło się w tle",
+ enter_folder_name_for_extraction: "Wpisz nazwę folderu do rozpakowania",
+ enter_file_name_for_compression: "Wpisz nazwę folderu do skompresowania",
+ toggle_fullscreen: "Tryb pełnoekranowy",
+ edit_file: "Edytuj plik",
+ file_content: "Zawartość pliku",
+ loading: "Ładowanie",
+ search: "Szukaj",
+ create_folder: "Stwórz folder",
+ create: "Utwórz",
+ folder_name: "Nazwa folderu",
+ upload: "Wgraj",
+ change_permissions: "Zmień uprawnienia",
+ change: "Zmień",
+ details: "Szczegóły",
+ icons: "Ikony",
+ list: "Lista",
+ name: "Nazwa",
+ size: "Rozmiar",
+ actions: "Akcje",
+ date: "Data",
+ selection: "Zaznaczone",
+ no_files_in_folder: "Brak plików w tym folderze",
+ no_folders_in_folder: "Ten folder nie zawiera podfolderów",
+ select_this: "Wybierz ten",
+ go_back: "W górę",
+ wait: "Wait",
+ move: "Przenieś",
+ download: "Pobierz",
+ view_item: "Wyświetl",
+ remove: "Usuń",
+ edit: "Edycja",
+ copy: "Kopiuj",
+ rename: "Zmień nazwę",
+ extract: "Rozpakuj",
+ compress: "Skompresuj",
+ error_invalid_filename: "Błędna nazwa pliku lub plik o takiej nazwie już istnieje, proszę użyć innej nazwy",
+ error_modifying: "Wystąpił błąd podczas modyfikowania pliku",
+ error_deleting: "Wystąpił błąd podczas usuwania pliku lub folderu",
+ error_renaming: "Wystąpił błąd podczas zmiany nazwy pliku",
+ error_copying: "Wystąpił błąd podczas kopiowania pliku",
+ error_compressing: "Wystąpił błąd podczas kompresowania pliku lub folderu",
+ error_extracting: "Wystąpił błąd podczas rozpakowywania pliku",
+ error_creating_folder: "Wystąpił błąd podczas tworzenia nowego folderu",
+ error_getting_content: "Wystąpił błąd podczas pobierania zawartości pliku",
+ error_changing_perms: "Wystąpił błąd podczas zmiany uprawnień pliku",
+ error_uploading_files: "Wystąpił błąd podczas wgrywania plików",
+ sure_to_start_compression_with: "Jesteś pewien, że chcesz skompresować",
+ owner: "Właściciel",
+ group: "Grupa",
+ others: "Inni",
+ read: "Odczyt",
+ write: "Zapis",
+ exec: "Wykonywanie",
+ original: "Oryginał",
+ changes: "Zmiany",
+ recursive: "Rekursywnie",
+ preview: "Podgląd elementu",
+ open: "Otwórz",
+ these_elements: "te {{total}} elementy?",
+ new_folder: "Nowy folder",
+ download_as_zip: "Pobierz jako ZIP"
+ }), e.translations("it", {
+ filemanager: "Gestore File",
+ language: "Lingua",
+ english: "Inglese",
+ spanish: "Spagnolo",
+ portuguese: "Portoghese",
+ french: "Francese",
+ german: "Tedesco",
+ hebrew: "Ebraico",
+ slovak: "Slovacco",
+ chinese_tw: "Cinese Tradizionale",
+ chinese_cn: "Cinese",
+ russian: "Russo",
+ ukrainian: "Ucraino",
+ turkish: "Turco",
+ persian: "Persiano",
+ polish: "Polacco",
+ confirm: "Conferma",
+ cancel: "Annulla",
+ close: "Chiudi",
+ upload_files: "Carica files",
+ files_will_uploaded_to: "I files saranno caricati in",
+ select_files: "Seleziona i files",
+ uploading: "Trasferimento",
+ permissions: "Permessi",
+ select_destination_folder: "Select carterlla di destinazione",
+ source: "Sorgente",
+ destination: "Destinazione",
+ copy_file: "Copia file",
+ sure_to_delete: "Sicuro di voler eliminare",
+ change_name_move: "Rinomina / sposta",
+ enter_new_name_for: "Inserisci nuovo nome per",
+ extract_item: "Estrai elemento",
+ extraction_started: "Decompressione avviata da un processo in background",
+ compression_started: "Compressione avviata da un processo in background",
+ enter_folder_name_for_extraction: "Inserisci nome cartella per l'estrazione di",
+ enter_file_name_for_compression: "Inserisci nome file per la compressione di",
+ toggle_fullscreen: "Passa a schermo intero",
+ edit_file: "Modifica file",
+ file_content: "Contenuto del file",
+ loading: "Caricamento",
+ search: "Cerca",
+ create_folder: "Crea cartella",
+ create: "Crea",
+ folder_name: "Nome cartella",
+ upload: "Upload",
+ change_permissions: "Modifica permessi",
+ change: "Modifica",
+ details: "Dettagli",
+ icons: "Icone",
+ list: "Lista",
+ name: "Nome",
+ size: "Dimensione",
+ actions: "Azioni",
+ date: "Data",
+ selection: "Selezione",
+ no_files_in_folder: "Nessun file nella cartella",
+ no_folders_in_folder: "Questa cartella non contiene altre cartelle",
+ select_this: "Seleziona questo",
+ go_back: "Indietro",
+ wait: "Attendere",
+ move: "Sposta",
+ download: "Scarica",
+ view_item: "Visualizza elemento",
+ remove: "Elimina",
+ edit: "Modifica",
+ copy: "Copia",
+ rename: "Rinomina",
+ extract: "Estrai",
+ compress: "Comprimi",
+ error_invalid_filename: "Nome file non valido o già esistente, specificarne un'altro",
+ error_modifying: "Errore durante la modifica del file",
+ error_deleting: "Errore durante l'eliminazione del file o della cartella",
+ error_renaming: "Errore durante la rinomina del file",
+ error_copying: "Errore durante la copia del file",
+ error_compressing: "Errore durante la compressione del file o della cartella",
+ error_extracting: "Errore durante l'estrazione del file",
+ error_creating_folder: "Errore nella creazione della cartella",
+ error_getting_content: "Errore nel recupero del contenuto del file",
+ error_changing_perms: "Errore durante la modifica dei permessi del file",
+ error_uploading_files: "Errore durante il trasferimento dei files",
+ sure_to_start_compression_with: "Sicuro di voler comprimere",
+ owner: "Proprietario",
+ group: "Gruppo",
+ others: "Altri",
+ read: "Lettura",
+ write: "Scrittura",
+ exec: "Esecuzione",
+ original: "Originario",
+ changes: "Cambiamenti",
+ recursive: "Ricorsivo",
+ preview: "Anteprima",
+ open: "Apri",
+ these_elements: "questi {{total}} elementi",
+ new_folder: "Nuova cartella",
+ download_as_zip: "Scarica come file ZIP"
+ })
+ }])
+}(), function (e) {
+ "use strict";
+ angular.module("FileManagerApp").service("apiHandler", ["$http", "$q", "$window", "$translate", "$httpParamSerializer", "Upload", function (e, r, 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 - Bridge response error, please check the API docs or this ajax response.".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 (n, i, a, t) {
+ var o = this, s = a || o.deferredHandler, l = r.defer(),
+ d = {action: "list", path: i, fileExtensions: t && t.length ? t : void 0};
+ return o.inprocess = !0, o.error = "", e.post(n, d).then(function (e) {
+ s(e.data, l, e.status)
+ }, function (e) {
+ s(e.data, l, e.status, "Unknown error listing, check the response")
+ }).finally(function () {
+ o.inprocess = !1
+ }), l.promise
+ }, o.prototype.copy = function (n, a, t, o) {
+ var s = this, l = r.defer(), d = {action: "copy", items: a, newPath: t};
+ return o && 1 === a.length && (d.singleFilename = o), s.inprocess = !0, s.error = "", e.post(n, d).then(function (e) {
+ s.deferredHandler(e.data, l, e.status)
+ }, function (e) {
+ s.deferredHandler(e.data, l, e.status, i.instant("error_copying"))
+ }).finally(function () {
+ s.inprocess = !1
+ }), l.promise
+ }, o.prototype.move = function (n, a, t) {
+ var o = this, s = r.defer(), l = {action: "move", items: a, newPath: t};
+ return o.inprocess = !0, o.error = "", e.post(n, l).then(function (e) {
+ o.deferredHandler(e.data, s, e.status)
+ }, function (e) {
+ o.deferredHandler(e.data, s, e.status, i.instant("error_moving"))
+ }).finally(function () {
+ o.inprocess = !1
+ }), s.promise
+ }, o.prototype.remove = function (n, a) {
+ var t = this, o = r.defer(), s = {action: "remove", items: a};
+ return t.inprocess = !0, t.error = "", e.post(n, s).then(function (e) {
+ t.deferredHandler(e.data, o, e.status)
+ }, function (e) {
+ t.deferredHandler(e.data, o, e.status, i.instant("error_deleting"))
+ }).finally(function () {
+ t.inprocess = !1
+ }), o.promise
+ }, o.prototype.upload = function (e, n, i) {
+ var a = this, o = r.defer();
+ a.inprocess = !0, a.progress = 0, a.error = "";
+ for (var s = {destination: n}, l = 0; l < i.length; l++) s["file-" + l] = i[l];
+ return i && i.length && t.upload({url: e, data: s}).then(function (e) {
+ a.deferredHandler(e.data, o, e.status)
+ }, function (e) {
+ a.deferredHandler(e.data, o, e.status, "Unknown error uploading files")
+ }, function (e) {
+ a.progress = Math.min(100, parseInt(100 * e.loaded / e.total)) - 1
+ }).finally(function () {
+ a.inprocess = !1, a.progress = 0
+ }), o.promise
+ }, o.prototype.getContent = function (n, a) {
+ var t = this, o = r.defer(), s = {action: "getContent", item: a};
+ return t.inprocess = !0, t.error = "", e.post(n, s).then(function (e) {
+ t.deferredHandler(e.data, o, e.status)
+ }, function (e) {
+ t.deferredHandler(e.data, o, e.status, i.instant("error_getting_content"))
+ }).finally(function () {
+ t.inprocess = !1
+ }), o.promise
+ }, o.prototype.edit = function (n, a, t) {
+ var o = this, s = r.defer(), l = {action: "edit", item: a, content: t};
+ return o.inprocess = !0, o.error = "", e.post(n, l).then(function (e) {
+ o.deferredHandler(e.data, s, e.status)
+ }, function (e) {
+ o.deferredHandler(e.data, s, e.status, i.instant("error_modifying"))
+ }).finally(function () {
+ o.inprocess = !1
+ }), s.promise
+ }, o.prototype.rename = function (n, a, t) {
+ var o = this, s = r.defer(), l = {action: "rename", item: a, newItemPath: t};
+ return o.inprocess = !0, o.error = "", e.post(n, l).then(function (e) {
+ o.deferredHandler(e.data, s, e.status)
+ }, function (e) {
+ o.deferredHandler(e.data, s, e.status, i.instant("error_renaming"))
+ }).finally(function () {
+ o.inprocess = !1
+ }), s.promise
+ }, o.prototype.getUrl = function (e, r) {
+ return r && [e, a({action: "download", path: r})].join("?")
+ }, o.prototype.download = function (a, t, o, s, l) {
+ var d = this, c = this.getUrl(a, t);
+ if (!s || l || !n.saveAs) return !n.saveAs && n.console.log("Your browser dont support ajax download, downloading by default"), !!n.open(c, "_blank", "");
+ var p = r.defer();
+ return d.inprocess = !0, e.get(c).then(function (e) {
+ var r = new n.Blob([e.data]);
+ p.resolve(e.data), n.saveAs(r, o)
+ }, function (e) {
+ d.deferredHandler(e.data, p, e.status, i.instant("error_downloading"))
+ }).finally(function () {
+ d.inprocess = !1
+ }), p.promise
+ }, o.prototype.downloadMultiple = function (t, o, s, l, d) {
+ var c = this, p = r.defer(), m = [t, a({action: "downloadMultiple", items: o, toFilename: s})].join("?");
+ return l && !d && n.saveAs ? (c.inprocess = !0, e.get(t).then(function (e) {
+ var r = new n.Blob([e.data]);
+ p.resolve(e.data), n.saveAs(r, s)
+ }, function (e) {
+ c.deferredHandler(e.data, p, e.status, i.instant("error_downloading"))
+ }).finally(function () {
+ c.inprocess = !1
+ }), p.promise) : (!n.saveAs && n.console.log("Your browser dont support ajax download, downloading by default"), !!n.open(m, "_blank", ""))
+ }, o.prototype.compress = function (n, a, t, o) {
+ var s = this, l = r.defer(), d = {action: "compress", items: a, destination: o, compressedFilename: t};
+ return s.inprocess = !0, s.error = "", e.post(n, d).then(function (e) {
+ s.deferredHandler(e.data, l, e.status)
+ }, function (e) {
+ s.deferredHandler(e.data, l, e.status, i.instant("error_compressing"))
+ }).finally(function () {
+ s.inprocess = !1
+ }), l.promise
+ }, o.prototype.extract = function (n, a, t, o) {
+ var s = this, l = r.defer(), d = {action: "extract", item: a, destination: o, folderName: t};
+ return s.inprocess = !0, s.error = "", e.post(n, d).then(function (e) {
+ s.deferredHandler(e.data, l, e.status)
+ }, function (e) {
+ s.deferredHandler(e.data, l, e.status, i.instant("error_extracting"))
+ }).finally(function () {
+ s.inprocess = !1
+ }), l.promise
+ }, o.prototype.changePermissions = function (n, a, t, o, s) {
+ var l = this, d = r.defer(),
+ c = {action: "changePermissions", items: a, perms: t, permsCode: o, recursive: !!s};
+ return l.inprocess = !0, l.error = "", e.post(n, c).then(function (e) {
+ l.deferredHandler(e.data, d, e.status)
+ }, function (e) {
+ l.deferredHandler(e.data, d, e.status, i.instant("error_changing_perms"))
+ }).finally(function () {
+ l.inprocess = !1
+ }), d.promise
+ }, o.prototype.createFolder = function (n, a) {
+ var t = this, o = r.defer(), s = {action: "createFolder", newPath: a};
+ return t.inprocess = !0, t.error = "", e.post(n, s).then(function (e) {
+ t.deferredHandler(e.data, o, e.status)
+ }, function (e) {
+ t.deferredHandler(e.data, o, e.status, i.instant("error_creating_folder"))
+ }).finally(function () {
+ t.inprocess = !1
+ }), o.promise
+ }, o
+ }])
+}(), function (e) {
+ "use strict";
+ angular.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, n) {
+ var i = this.getFileList(e);
+ return this.apiHandler.move(r.moveUrl, i, this.getPath(n))
+ }, i.prototype.remove = function (e) {
+ var n = this.getFileList(e);
+ return this.apiHandler.remove(r.removeUrl, n)
+ }, i.prototype.upload = function (n, i) {
+ if (!e.FormData) throw new Error("Unsupported browser version");
+ var a = this.getPath(i);
+ return this.apiHandler.upload(r.uploadUrl, a, n)
+ }, 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.getUrl = function (e) {
+ var n = this.getFilePath(e);
+ return this.apiHandler.getUrl(r.downloadFileUrl, n)
+ }, i.prototype.download = function (e, n) {
+ var i = this.getFilePath(e), a = e.model.name;
+ if (!e.isFolder()) return 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) + "-" + r.multipleDownloadFileName;
+ return this.apiHandler.downloadMultiple(r.downloadMultipleUrl, i, a, 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
+ }])
+}(), function (e) {
+ "use strict";
+ angular.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 - Bridge response error, please check the API docs or this ajax response.".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)
+ }
+
+ var a = [], t = {};
+ !this.history.length && this.history.push({
+ name: this.getBasePath()[0] || "",
+ nodes: []
+ }), i(this.history[0], a), (t = function (e, r) {
+ return e.filter(function (e) {
+ return e.name === r
+ })[0]
+ }(a, e)) && (t.nodes = []);
+ for (var o in this.fileList) {
+ var s = this.fileList[o];
+ s instanceof n && s.isFolder() && r(this.history[0], s, 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.module("FileManagerApp").run(["$templateCache", function (e) {
+ e.put("src/templates/current-folder-breadcrumb.html", '<ol class="breadcrumb">\r\n <li>\r\n <a href="" ng-click="fileNavigator.goTo(-1)">\r\n {{"filemanager" | translate}}\r\n </a>\r\n </li>\r\n <li ng-repeat="(key, dir) in fileNavigator.currentPath track by key" ng-class="{\'active\':$last}" class="animated fast fadeIn">\r\n <a href="" ng-show="!$last" ng-click="fileNavigator.goTo(key)">\r\n {{dir | strLimit : 8}}\r\n </a>\r\n <span ng-show="$last">\r\n {{dir | strLimit : 12}}\r\n </span>\r\n </li>\r\n</ol>'), e.put("src/templates/item-context-menu.html", '<div id="context-menu" class="dropdown clearfix animated fast fadeIn">\r\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="temps.length">\r\n\r\n <li ng-show="singleSelection() && singleSelection().isFolder()">\r\n <a href="" tabindex="-1" ng-click="smartClick(singleSelection())">\r\n <i class="glyphicon glyphicon-folder-open"></i> {{\'open\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.pickCallback && singleSelection() && singleSelection().isSelectable()">\r\n <a href="" tabindex="-1" ng-click="config.pickCallback(singleSelection().model)">\r\n <i class="glyphicon glyphicon-hand-up"></i> {{\'select_this\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.download && !selectionHas(\'dir\') && singleSelection()">\r\n <a href="" tabindex="-1" ng-click="download()">\r\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.downloadMultiple && !selectionHas(\'dir\') && !singleSelection()">\r\n <a href="" tabindex="-1" ng-click="download()">\r\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download_as_zip\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.preview && singleSelection().isImage() && singleSelection()">\r\n <a href="" tabindex="-1" ng-click="openImagePreview()">\r\n <i class="glyphicon glyphicon-picture"></i> {{\'view_item\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.rename && singleSelection()">\r\n <a href="" tabindex="-1" ng-click="modal(\'rename\')">\r\n <i class="glyphicon glyphicon-edit"></i> {{\'rename\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.move">\r\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'move\')">\r\n <i class="glyphicon glyphicon-arrow-right"></i> {{\'move\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.copy && !selectionHas(\'dir\')">\r\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'copy\')">\r\n <i class="glyphicon glyphicon-log-out"></i> {{\'copy\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.edit && singleSelection() && singleSelection().isEditable()">\r\n <a href="" tabindex="-1" ng-click="openEditItem()">\r\n <i class="glyphicon glyphicon-pencil"></i> {{\'edit\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.changePermissions">\r\n <a href="" tabindex="-1" ng-click="modal(\'changepermissions\')">\r\n <i class="glyphicon glyphicon-lock"></i> {{\'permissions\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.compress && (!singleSelection() || selectionHas(\'dir\'))">\r\n <a href="" tabindex="-1" ng-click="modal(\'compress\')">\r\n <i class="glyphicon glyphicon-compressed"></i> {{\'compress\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li ng-show="config.allowedActions.extract && singleSelection() && singleSelection().isExtractable()">\r\n <a href="" tabindex="-1" ng-click="modal(\'extract\')">\r\n <i class="glyphicon glyphicon-export"></i> {{\'extract\' | translate}}\r\n </a>\r\n </li>\r\n\r\n <li class="divider" ng-show="config.allowedActions.remove"></li>\r\n \r\n <li ng-show="config.allowedActions.remove">\r\n <a href="" tabindex="-1" ng-click="modal(\'remove\')">\r\n <i class="glyphicon glyphicon-trash"></i> {{\'remove\' | translate}}\r\n </a>\r\n </li>\r\n\r\n </ul>\r\n\r\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="!temps.length">\r\n <li ng-show="config.allowedActions.createFolder">\r\n <a href="" tabindex="-1" ng-click="modal(\'newfolder\') && prepareNewFolder()">\r\n <i class="glyphicon glyphicon-plus"></i> {{\'new_folder\' | translate}}\r\n </a>\r\n </li>\r\n <li ng-show="config.allowedActions.upload">\r\n <a href="" tabindex="-1" ng-click="modal(\'uploadfile\')">\r\n <i class="glyphicon glyphicon-cloud-upload"></i> {{\'upload_files\' | translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n</div>'), e.put("src/templates/main-icons.html", '<div class="iconset noselect">\r\n <div class="item-list clearfix" ng-click="selectOrUnselect(null, $event)" ng-right-click="selectOrUnselect(null, $event)" prevent="true">\r\n <div class="col-120" ng-repeat="item in $parent.fileList = (fileNavigator.fileList | filter: {model:{name: query}})" ng-show="!fileNavigator.requesting && !fileNavigator.error">\r\n <a href="" class="thumbnail text-center" ng-click="selectOrUnselect(item, $event)" ng-dblclick="smartClick(item)" ng-right-click="selectOrUnselect(item, $event)" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})" ng-class="{selected: isSelected(item)}">\r\n <div class="item-icon">\r\n <i class="glyphicon glyphicon-folder-open" ng-show="item.model.type === \'dir\'"></i>\r\n <i class="glyphicon glyphicon-file" data-ext="{{ item.model.name | fileExtension }}" ng-show="item.model.type === \'file\'" ng-class="{\'item-extension\': config.showExtensionIcons}"></i>\r\n </div>\r\n {{item.model.name | strLimit : 11 }}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div ng-show="fileNavigator.requesting">\r\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\r\n </div>\r\n\r\n <div class="alert alert-warning" ng-show="!fileNavigator.requesting && fileNavigator.fileList.length < 1 && !fileNavigator.error">\r\n {{"no_files_in_folder" | translate}}...\r\n </div>\r\n \r\n <div class="alert alert-danger" ng-show="!fileNavigator.requesting && fileNavigator.error">\r\n {{ fileNavigator.error }}\r\n </div>\r\n</div>'), e.put("src/templates/main-table-modal.html", '<table class="table table-condensed table-modal-condensed mb0">\r\n <thead>\r\n <tr>\r\n <th>\r\n <a href="" ng-click="order(\'model.name\')">\r\n {{"name" | translate}}\r\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\r\n </a>\r\n </th>\r\n <th class="text-right"></th>\r\n </tr>\r\n </thead>\r\n <tbody class="file-item">\r\n <tr ng-show="fileNavigator.requesting">\r\n <td colspan="2">\r\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\r\n </td>\r\n </tr>\r\n <tr ng-show="!fileNavigator.requesting && !fileNavigator.listHasFolders() && !fileNavigator.error">\r\n <td>\r\n {{"no_folders_in_folder" | translate}}...\r\n </td>\r\n <td class="text-right">\r\n <button class="btn btn-sm btn-default" ng-click="fileNavigator.upDir()">{{"go_back" | translate}}</button>\r\n </td>\r\n </tr>\r\n <tr ng-show="!fileNavigator.requesting && fileNavigator.error">\r\n <td colspan="2">\r\n {{ fileNavigator.error }}\r\n </td>\r\n </tr>\r\n <tr ng-repeat="item in fileNavigator.fileList | orderBy:predicate:reverse" ng-show="!fileNavigator.requesting && item.model.type === \'dir\'" ng-if="!selectedFilesAreChildOfPath(item)">\r\n <td>\r\n <a href="" ng-click="fileNavigator.folderClick(item)" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\r\n <i class="glyphicon glyphicon-folder-close"></i>\r\n {{item.model.name | strLimit : 32}}\r\n </a>\r\n </td>\r\n <td class="text-right">\r\n <button class="btn btn-sm btn-default" ng-click="select(item)">\r\n <i class="glyphicon glyphicon-hand-up"></i> {{"select_this" | translate}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>'), e.put("src/templates/main-table.html", '<table class="table mb0 table-files noselect">\r\n <thead>\r\n <tr>\r\n <th>\r\n <a href="" ng-click="order(\'model.name\')">\r\n {{"name" | translate}}\r\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\r\n </a>\r\n </th>\r\n <th class="hidden-xs" ng-hide="config.hideSize">\r\n <a href="" ng-click="order(\'model.size\')">\r\n {{"size" | translate}}\r\n <span class="sortorder" ng-show="predicate[1] === \'model.size\'" ng-class="{reverse:reverse}"></span>\r\n </a>\r\n </th>\r\n <th class="hidden-sm hidden-xs" ng-hide="config.hideDate">\r\n <a href="" ng-click="order(\'model.date\')">\r\n {{"date" | translate}}\r\n <span class="sortorder" ng-show="predicate[1] === \'model.date\'" ng-class="{reverse:reverse}"></span>\r\n </a>\r\n </th>\r\n <th class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\r\n <a href="" ng-click="order(\'model.permissions\')">\r\n {{"permissions" | translate}}\r\n <span class="sortorder" ng-show="predicate[1] === \'model.permissions\'" ng-class="{reverse:reverse}"></span>\r\n </a>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class="file-item">\r\n <tr ng-show="fileNavigator.requesting">\r\n <td colspan="5">\r\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\r\n </td>\r\n </tr>\r\n <tr ng-show="!fileNavigator.requesting &amp;&amp; fileNavigator.fileList.length < 1 &amp;&amp; !fileNavigator.error">\r\n <td colspan="5">\r\n {{"no_files_in_folder" | translate}}...\r\n </td>\r\n </tr>\r\n <tr ng-show="!fileNavigator.requesting &amp;&amp; fileNavigator.error">\r\n <td colspan="5">\r\n {{ fileNavigator.error }}\r\n </td>\r\n </tr>\r\n <tr class="item-list" ng-repeat="item in $parent.fileList = (fileNavigator.fileList | filter: {model:{name: query}} | orderBy:predicate:reverse)" ng-show="!fileNavigator.requesting" ng-click="selectOrUnselect(item, $event)" ng-dblclick="smartClick(item)" ng-right-click="selectOrUnselect(item, $event)" ng-class="{selected: isSelected(item)}">\r\n <td>\r\n <a href="" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\r\n <i class="glyphicon glyphicon-folder-close" ng-show="item.model.type === \'dir\'"></i>\r\n <i class="glyphicon glyphicon-file" ng-show="item.model.type === \'file\'"></i>\r\n {{item.model.name | strLimit : 64}}\r\n </a>\r\n </td>\r\n <td class="hidden-xs">\r\n <span ng-show="item.model.type !== \'dir\' || config.showSizeForDirectories">\r\n {{item.model.size | humanReadableFileSize}}\r\n </span>\r\n </td>\r\n <td class="hidden-sm hidden-xs" ng-hide="config.hideDate">\r\n {{item.model.date | formatDate }}\r\n </td>\r\n <td class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\r\n {{item.model.perms.toCode(item.model.type === \'dir\'?\'d\':\'-\')}}\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n'), e.put("src/templates/main.html", '<div ng-controller="FileManagerCtrl">\r\n <div ng-include="config.tplPath + \'/navbar.html\'"></div>\r\n\r\n <div class="container-fluid">\r\n <div class="row">\r\n\r\n <div class="col-sm-4 col-md-3 sidebar file-tree animated slow fadeIn" ng-include="config.tplPath + \'/sidebar.html\'" ng-show="config.sidebar &amp;&amp; fileNavigator.history[0]">\r\n </div>\r\n\r\n <div class="main" ng-class="config.sidebar &amp;&amp; fileNavigator.history[0] &amp;&amp; \'col-sm-8 col-md-9\'" ngf-model-options="{updateOn: \'drop\', allowInvalid: false, debounce: 0}" ngf-drop="addForUpload($files)" ngf-drag-over-class="\'upload-dragover\'" ngf-multiple="true">\r\n <div ng-include="config.tplPath + \'/\' + viewTemplate" class="main-navigation clearfix"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div ng-include="config.tplPath + \'/modals.html\'"></div>\r\n <div ng-include="config.tplPath + \'/item-context-menu.html\'"></div>\r\n</div>\r\n'), e.put("src/templates/modals.html", '<div class="modal animated fadeIn" id="imagepreview">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{"preview" | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div class="text-center">\r\n <img id="imagepreview-target" class="preview" alt="{{singleSelection().model.name}}" ng-class="{\'loading\': apiMiddleware.apiHandler.inprocess}">\r\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\r\n </div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="remove">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="remove()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{"confirm" | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n {{\'sure_to_delete\' | translate}} <span ng-include data-src="\'selected-files-msg\'"></span>\r\n\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess" autofocus="autofocus">{{"remove" | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="move">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="move()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'move\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'move\' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div class="modal animated fadeIn" id="rename">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="rename()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'rename\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection() && singleSelection().model.name}}</b></label>\r\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\r\n\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'rename\' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="copy">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="copy()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'copy_file\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div ng-show="singleSelection()">\r\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection().model.name}}</b></label>\r\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\r\n </div>\r\n\r\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"copy" | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="compress">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="compress()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'compress\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\r\n <div class="label label-success error-msg">{{\'compression_started\' | translate}}</div>\r\n </div>\r\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\r\n <div ng-hide="config.allowedActions.compressChooseName">\r\n {{\'sure_to_start_compression_with\' | translate}} <b>{{singleSelection().model.name}}</b> ?\r\n </div>\r\n <div ng-show="config.allowedActions.compressChooseName">\r\n <label class="radio">\r\n {{\'enter_file_name_for_compression\' | translate}}\r\n <span ng-include data-src="\'selected-files-msg\'"></span>\r\n </label>\r\n <input class="form-control" ng-model="temp.tempModel.name" autofocus="autofocus">\r\n </div>\r\n </div>\r\n\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\r\n </div>\r\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'compress\' | translate}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="extract" ng-init="singleSelection().emptyName()">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="extract()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'extract_item\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\r\n <div class="label label-success error-msg">{{\'extraction_started\' | translate}}</div>\r\n </div>\r\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\r\n <label class="radio">{{\'enter_folder_name_for_extraction\' | translate}} <b>{{singleSelection().model.name}}</b></label>\r\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\r\n </div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\r\n </div>\r\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'extract\' | translate}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="edit" ng-class="{\'modal-fullscreen\': fullscreen}">\r\n <div class="modal-dialog modal-lg">\r\n <div class="modal-content">\r\n <form ng-submit="edit()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <button type="button" class="close fullscreen" ng-click="fullscreen=!fullscreen">\r\n <i class="glyphicon glyphicon-fullscreen"></i>\r\n <span class="sr-only">{{\'toggle_fullscreen\' | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'edit_file\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <label class="radio bold">{{ singleSelection().model.fullPath() }}</label>\r\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\r\n <textarea class="form-control code" ng-model="singleSelection().tempModel.content" ng-show="!apiMiddleware.apiHandler.inprocess" autofocus="autofocus"></textarea>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'close\' | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-show="config.allowedActions.edit" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'edit\' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="newfolder">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="createFolder()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'new_folder\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <label class="radio">{{\'folder_name\' | translate}}</label>\r\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'create\' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="uploadfile">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form>\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{"upload_files" | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <label class="radio">\r\n {{"files_will_uploaded_to" | translate}} \r\n <b>/{{fileNavigator.currentPath.join(\'/\')}}</b>\r\n </label>\r\n <button class="btn btn-default btn-block" ngf-select="$parent.addForUpload($files)" ngf-multiple="true">\r\n {{"select_files" | translate}}\r\n </button>\r\n \r\n <div class="upload-list">\r\n <ul class="list-group">\r\n <li class="list-group-item" ng-repeat="(index, uploadFile) in $parent.uploadFileList">\r\n <button class="btn btn-sm btn-danger pull-right" ng-click="$parent.removeFromUpload(index)">\r\n &times;\r\n </button>\r\n <h5 class="list-group-item-heading">{{uploadFile.name}}</h5>\r\n <p class="list-group-item-text">{{uploadFile.size | humanReadableFileSize}}</p>\r\n </li>\r\n </ul>\r\n <div ng-show="apiMiddleware.apiHandler.inprocess">\r\n <em>{{"uploading" | translate}}... {{apiMiddleware.apiHandler.progress}}%</em>\r\n <div class="progress mb0">\r\n <div class="progress-bar active" role="progressbar" aria-valuenow="{{apiMiddleware.apiHandler.progress}}" aria-valuemin="0" aria-valuemax="100" style="width: {{apiMiddleware.apiHandler.progress}}%"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <div>\r\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="!$parent.uploadFileList.length || apiMiddleware.apiHandler.inprocess" ng-click="uploadFiles()">{{\'upload\' | translate}}</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="changepermissions">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <form ng-submit="changePermissions()">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{\'change_permissions\' | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <table class="table mb0">\r\n <thead>\r\n <tr>\r\n <th>{{\'permissions\' | translate}}</th>\r\n <th class="col-xs-1 text-center">{{\'read\' | translate}}</th>\r\n <th class="col-xs-1 text-center">{{\'write\' | translate}}</th>\r\n <th class="col-xs-1 text-center">{{\'exec\' | translate}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr ng-repeat="(permTypeKey, permTypeValue) in temp.tempModel.perms">\r\n <td>{{permTypeKey | translate}}</td>\r\n <td ng-repeat="(permKey, permValue) in permTypeValue" class="col-xs-1 text-center" ng-click="main()">\r\n <label class="col-xs-12">\r\n <input type="checkbox" ng-model="temp.tempModel.perms[permTypeKey][permKey]">\r\n </label>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class="checkbox" ng-show="config.enablePermissionsRecursive && selectionHas(\'dir\')">\r\n <label>\r\n <input type="checkbox" ng-model="temp.tempModel.recursive"> {{\'recursive\' | translate}}\r\n </label>\r\n </div>\r\n <div class="clearfix mt10">\r\n <span class="label label-primary pull-left" ng-hide="temp.multiple">\r\n {{\'original\' | translate}}: \r\n {{temp.model.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \r\n ({{temp.model.perms.toOctal()}})\r\n </span>\r\n <span class="label label-primary pull-right">\r\n {{\'changes\' | translate}}: \r\n {{temp.tempModel.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \r\n ({{temp.tempModel.perms.toOctal()}})\r\n </span>\r\n </div>\r\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\r\n <button type="submit" class="btn btn-primary" ng-disabled="">{{\'change\' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class="modal animated fadeIn" id="selector" ng-controller="ModalFileManagerCtrl">\r\n <div class="modal-dialog">\r\n <div class="modal-content">\r\n <div class="modal-header">\r\n <button type="button" class="close" data-dismiss="modal">\r\n <span aria-hidden="true">&times;</span>\r\n <span class="sr-only">{{"close" | translate}}</span>\r\n </button>\r\n <h4 class="modal-title">{{"select_destination_folder" | translate}}</h4>\r\n </div>\r\n <div class="modal-body">\r\n <div>\r\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'"></div>\r\n <div ng-include="config.tplPath + \'/main-table-modal.html\'"></div>\r\n <hr />\r\n <button class="btn btn-sm btn-default" ng-click="selectCurrent()">\r\n <i class="glyphicon"></i> {{"select_this" | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class="modal-footer">\r\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<script type="text/ng-template" id="path-selector">\r\n <div class="panel panel-primary mt10 mb0">\r\n <div class="panel-body">\r\n <div class="detail-sources">\r\n <div class="like-code mr5"><b>{{"selection" | translate}}:</b>\r\n <span ng-include="\'selected-files-msg\'"></span>\r\n </div>\r\n </div>\r\n <div class="detail-sources">\r\n <div class="like-code mr5">\r\n <b>{{"destination" | translate}}:</b> {{ getSelectedPath() }}\r\n </div>\r\n <a href="" class="label label-primary" ng-click="openNavigator(fileNavigator.currentPath)">\r\n {{\'change\' | translate}}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n<\/script>\r\n\r\n<script type="text/ng-template" id="error-bar">\r\n <div class="label label-danger error-msg pull-left animated fadeIn" ng-show="apiMiddleware.apiHandler.error">\r\n <i class="glyphicon glyphicon-remove-circle"></i>\r\n <span>{{apiMiddleware.apiHandler.error}}</span>\r\n </div>\r\n<\/script>\r\n\r\n<script type="text/ng-template" id="selected-files-msg">\r\n <span ng-show="temps.length == 1">\r\n {{singleSelection().model.name}}\r\n </span>\r\n <span ng-show="temps.length > 1">\r\n {{\'these_elements\' | translate:totalSelecteds()}}\r\n <a href="" class="label label-primary" ng-click="showDetails = !showDetails">\r\n {{showDetails ? \'-\' : \'+\'}} {{\'details\' | translate}}\r\n </a>\r\n </span>\r\n <div ng-show="temps.length > 1 &amp;&amp; showDetails">\r\n <ul class="selected-file-details">\r\n <li ng-repeat="tempItem in temps">\r\n <b>{{tempItem.model.name}}</b>\r\n </li>\r\n </ul>\r\n </div>\r\n<\/script>\r\n'), e.put("src/templates/navbar.html", '<nav class="navbar navbar-inverse">\r\n <div class="container-fluid">\r\n <div class="row">\r\n <div class="col-sm-9 col-md-10 hidden-xs">\r\n <div ng-show="!config.breadcrumb">\r\n <a class="navbar-brand hidden-xs ng-binding" href="">angular-{{"filemanager" | translate}}</a>\r\n </div>\r\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'" ng-show="config.breadcrumb">\r\n </div>\r\n </div>\r\n <div class="col-sm-3 col-md-2">\r\n <div class="navbar-collapse">\r\n <div class="navbar-form navbar-right text-right">\r\n <div class="pull-left visible-xs" ng-if="fileNavigator.currentPath.length">\r\n <button class="btn btn-primary btn-flat" ng-click="fileNavigator.upDir()">\r\n <i class="glyphicon glyphicon-chevron-left"></i>\r\n </button>\r\n {{fileNavigator.getCurrentFolderName() | strLimit : 12}}\r\n </div>\r\n <div class="btn-group">\r\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuSearch" data-toggle="dropdown" aria-expanded="true">\r\n <i class="glyphicon glyphicon-search mr2"></i>\r\n </button>\r\n <div class="dropdown-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\r\n <input type="text" class="form-control" ng-show="config.searchForm" placeholder="{{\'search\' | translate}}..." ng-model="$parent.query">\r\n </div>\r\n </div>\r\n\r\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-icons.html\')" ng-show="$parent.viewTemplate !==\'main-icons.html\'" title="{{\'icons\' | translate}}">\r\n <i class="glyphicon glyphicon-th-large"></i>\r\n </button>\r\n\r\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-table.html\')" ng-show="$parent.viewTemplate !==\'main-table.html\'" title="{{\'list\' | translate}}">\r\n <i class="glyphicon glyphicon-th-list"></i>\r\n </button>\r\n\r\n <div class="btn-group">\r\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuLang" data-toggle="dropdown" aria-expanded="true">\r\n <i class="glyphicon glyphicon-globe mr2"></i>\r\n </button>\r\n\r\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'en\')">English</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_tw\')">正體中文</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_cn\')">简体中文</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'es\')">Español</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'nl\')">Nederlands</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pt\')">Portugues</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fr\')">Français</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'de\')">Deutsch</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'he\')">עברי</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'it\')">italiano</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'sk\')">Slovenčina</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ru\')">русский</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ua\')">український</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'tr\')">Türkçe</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fa\')">فارسی</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pl\')">Polski</a></li>\r\n </ul>\r\n </div>\r\n\r\n <div class="btn-group">\r\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="more" data-toggle="dropdown" aria-expanded="true">\r\n <i class="glyphicon glyphicon-option-vertical"></i>\r\n </button>\r\n\r\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="more">\r\n <li role="presentation" ng-show="config.allowedActions.createFolder" ng-click="modal(\'newfolder\') && prepareNewFolder()">\r\n <a href="" role="menuitem" tabindex="-1">\r\n <i class="glyphicon glyphicon-plus"></i> {{"new_folder" | translate}}\r\n </a>\r\n </li>\r\n <li role="presentation" ng-show="config.allowedActions.upload" ng-click="modal(\'uploadfile\')">\r\n <a href="" role="menuitem" tabindex="-1">\r\n <i class="glyphicon glyphicon-cloud-upload"></i> {{"upload_files" | translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</nav>\r\n'), e.put("src/templates/sidebar.html", '<ul class="nav nav-sidebar file-tree-root">\r\n <li ng-repeat="item in fileNavigator.history" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\r\n</ul>\r\n\r\n<script type="text/ng-template" id="folder-branch-item">\r\n <a href="" ng-click="fileNavigator.folderClick(item.item)" class="animated fast fadeInDown">\r\n\r\n <span class="point">\r\n <i class="glyphicon glyphicon-chevron-down" ng-show="isInThisPath(item.name)"></i>\r\n <i class="glyphicon glyphicon-chevron-right" ng-show="!isInThisPath(item.name)"></i>\r\n </span>\r\n\r\n <i class="glyphicon glyphicon-folder-open mr2" ng-show="isInThisPath(item.name)"></i>\r\n <i class="glyphicon glyphicon-folder-close mr2" ng-show="!isInThisPath(item.name)"></i>\r\n {{ (item.name.split(\'/\').pop() || fileNavigator.getBasePath().join(\'/\') || \'/\') | strLimit : 30 }}\r\n </a>\r\n <ul class="nav nav-sidebar">\r\n <li ng-repeat="item in item.nodes" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\r\n </ul>\r\n<\/script>'), e.put("src/templates/spinner.html", '<div class="spinner-wrapper col-xs-12">\r\n <svg class="spinner-container" style="width:65px;height:65px" viewBox="0 0 44 44">\r\n <circle class="path" cx="22" cy="22" r="20" fill="none" stroke-width="4"></circle>\r\n </svg>\r\n</div>')
+}]); \ No newline at end of file