1 line
139 KiB
JavaScript
1 line
139 KiB
JavaScript
!function(e,n){"use strict";n.module("FileManagerApp",["pascalprecht.translate","ngFileUpload"]),n.element(e.document).on("shown.bs.modal",".modal",function(){e.setTimeout(function(){n.element("[autofocus]",this).focus()}.bind(this),100)}),n.element(e.document).on("click",function(){n.element("#context-menu").hide()}),n.element(e.document).on("contextmenu",'.main-navigation .table-files tr.item-list:has("td"), .item-list',function(a){var r=n.element("#context-menu");a.pageX>=e.innerWidth-r.width()&&(a.pageX-=r.width()),a.pageY>=e.innerHeight-r.height()&&(a.pageY-=r.height()),r.hide().css({left:a.pageX,top:a.pageY}).appendTo("body").show(),a.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 n,a=Object(this),r=a.length>>>0,i=arguments[1],t=0;t<r;t++)if(n=a[t],e.call(i,n,t,a))return n})}(window,angular),function(e){"use strict";e.module("FileManagerApp").controller("FileManagerCtrl",["$scope","$rootScope","$window","$translate","fileManagerConfig","item","fileNavigator","apiMiddleware",function(n,a,r,i,t,l,o,s){var d=r.localStorage;n.config=t,n.reverse=!1,n.predicate=["model.type","model.name"],n.order=function(e){n.reverse=n.predicate[1]===e&&!n.reverse,n.predicate[1]=e},n.query="",n.fileNavigator=new o,n.apiMiddleware=new s,n.uploadFileList=[],n.viewTemplate=d.getItem("viewTemplate")||"main-icons.html",n.fileList=[],n.temps=[],n.$watch("temps",function(){n.singleSelection()?n.temp=n.singleSelection():(n.temp=new l({rights:644}),n.temp.multiple=!0),n.temp.revert()}),n.fileNavigator.onRefresh=function(){n.temps=[],n.query="",a.selectedModalPath=n.fileNavigator.currentPath},n.setTemplate=function(e){d.setItem("viewTemplate",e),n.viewTemplate=e},n.changeLanguage=function(e){if(e)return d.setItem("language",e),i.use(e);i.use(d.getItem("language")||t.defaultLang)},n.isSelected=function(e){return-1!==n.temps.indexOf(e)},n.selectOrUnselect=function(e,a){var r=n.temps.indexOf(e),i=a&&3==a.which;if(a&&a.target.hasAttribute("prevent"))n.temps=[];else if(!(!e||i&&n.isSelected(e))){if(a&&a.shiftKey&&!i){var t=n.fileList,l=t.indexOf(e),o=n.temps[0],s=t.indexOf(o),d=void 0;if(o&&t.indexOf(o)<l){for(n.temps=[];s<=l;)d=t[s],!n.isSelected(d)&&n.temps.push(d),s++;return}if(o&&t.indexOf(o)>l){for(n.temps=[];s>=l;)d=t[s],!n.isSelected(d)&&n.temps.push(d),s--;return}}!a||i||!a.ctrlKey&&!a.metaKey?n.temps=[e]:n.isSelected(e)?n.temps.splice(r,1):n.temps.push(e)}},n.singleSelection=function(){return 1===n.temps.length&&n.temps[0]},n.totalSelecteds=function(){return{total:n.temps.length}},n.selectionHas=function(e){return n.temps.find(function(n){return n&&n.model.type===e})},n.prepareNewFolder=function(){var e=new l(null,n.fileNavigator.currentPath);return n.temps=[e],e},n.prepareInstallUrl=function(){var e=new l(null,null);return n.temps=[e],e},n.prepareDownloadUrl=function(){var e=new l(null,null);return e.name="/data",n.temps=[e],e},n.smartClick=function(e){var a=n.config.allowedActions.pickFiles;if(e.isFolder())return n.fileNavigator.folderClick(e);if("function"==typeof n.config.pickCallback&&a){if(!0===n.config.pickCallback(e.model))return}return e.isImage()?n.config.previewImagesInModal?n.openImagePreview(e):n.apiMiddleware.download(e,!0):e.isEditable()?n.openEditItem(e):void 0},n.openImagePreview=function(){var e=n.singleSelection();n.apiMiddleware.apiHandler.inprocess=!0,n.modal("imagepreview",null,!0).find("#imagepreview-target").attr("src",n.getUrl(e)).unbind("load error").on("load error",function(){n.apiMiddleware.apiHandler.inprocess=!1,n.$apply()})},n.openEditItem=function(){var e=n.singleSelection();n.apiMiddleware.getContent(e).then(function(n){e.tempModel.content=e.model.content=n.result}),n.modal("edit")},n.modal=function(a,r,i){var t=e.element("#"+a);return t.modal(r?"hide":"show"),n.apiMiddleware.apiHandler.error="",n.apiMiddleware.apiHandler.asyncSuccess=!1,!i||t},n.modalWithPathSelector=function(e){return a.selectedModalPath=n.fileNavigator.currentPath,n.modal(e)},n.isInThisPath=function(e){return-1!==(n.fileNavigator.currentPath.join("/")+"/").indexOf(e+"/")},n.edit=function(){n.apiMiddleware.edit(n.singleSelection()).then(function(){n.modal("edit",!0)})},n.changePermissions=function(){n.apiMiddleware.changePermissions(n.temps,n.temp).then(function(){n.fileNavigator.refresh(),n.modal("changepermissions",!0)})},n.download=function(){var e=n.singleSelection();return e?n.apiMiddleware.download(e):n.apiMiddleware.downloadMultiple(n.temps)},n.copy=function(){var e=n.singleSelection();if(e){var r=e.tempModel.name.trim();if(n.fileNavigator.fileNameExists(r)&&c(e))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1;if(!r)return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1}n.apiMiddleware.copy(n.temps,a.selectedModalPath).then(function(){n.fileNavigator.refresh(),n.modal("copy",!0)})},n.compress=function(){var e=n.temp.tempModel.name.trim();return n.fileNavigator.fileNameExists(e)&&c(n.temp)?(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1):e?void n.apiMiddleware.compress(n.temps,e,a.selectedModalPath).then(function(){if(n.fileNavigator.refresh(),!n.config.compressAsync)return n.modal("compress",!0);n.apiMiddleware.apiHandler.asyncSuccess=!0},function(){n.apiMiddleware.apiHandler.asyncSuccess=!1}):(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1)},n.extract=function(){var e=n.temp,r=n.temp.tempModel.name.trim();return n.fileNavigator.fileNameExists(r)&&c(n.temp)?(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1):r?void n.apiMiddleware.extract(e,r,a.selectedModalPath).then(function(){if(n.fileNavigator.refresh(),!n.config.extractAsync)return n.modal("extract",!0);n.apiMiddleware.apiHandler.asyncSuccess=!0},function(){n.apiMiddleware.apiHandler.asyncSuccess=!1}):(n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1)},n.remove=function(){n.apiMiddleware.remove(n.temps).then(function(){n.fileNavigator.refresh(),n.modal("remove",!0)})},n.isInstallable=function(){for(var e=0;e<n.temps.length;e++)if(n.temps[e].isFolder()||!n.temps[e].isInstallable())return!1;return!0},n.install=function(){n.apiMiddleware.install(n.temps).then(function(){n.fileNavigator.refresh()})},n.move=function(){var e=n.singleSelection()||n.temps[0];if(e&&c(e))return n.apiMiddleware.apiHandler.error=i.instant("error_cannot_move_same_path"),!1;n.apiMiddleware.move(n.temps,a.selectedModalPath).then(function(){n.fileNavigator.refresh(),n.modal("move",!0)})},n.rename=function(){var e=n.singleSelection(),a=e.tempModel.name,r=e.tempModel.path.join("")===e.model.path.join("");if(!a||r&&n.fileNavigator.fileNameExists(a))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename"),!1;n.apiMiddleware.rename(e).then(function(){n.fileNavigator.refresh(),n.modal("rename",!0)})},n.createFolder=function(){var e=n.singleSelection(),a=e.tempModel.name;if(!a||n.fileNavigator.fileNameExists(a))return n.apiMiddleware.apiHandler.error=i.instant("error_invalid_filename");n.apiMiddleware.createFolder(e).then(function(){n.fileNavigator.refresh(),n.modal("newfolder",!0)})},n.installUrl=function(){var e=n.singleSelection();if(!e.tempModel.name)return n.apiMiddleware.apiHandler.error=i.instant("error_installing_url");n.apiMiddleware.installUrl(e).then(function(){n.modal("install_url",!0)})},n.downloadUrl=function(){var e=n.singleSelection();e.tempModel.path=a.getSelectedPath();if(!e.tempModel.path)return n.apiMiddleware.apiHandler.error=i.instant("error_download_url");n.apiMiddleware.downloadUrl(e).then(function(){n.modal("download_url",!0)})},n.addForUpload=function(e){n.uploadFileList=n.uploadFileList.concat(e),n.modal("uploadfile")},n.removeFromUpload=function(e){n.uploadFileList.splice(e,1)},n.uploadFiles=function(){n.apiMiddleware.upload(n.uploadFileList,n.fileNavigator.currentPath).then(function(){n.fileNavigator.refresh(),n.uploadFileList=[],n.modal("uploadfile",!0)},function(e){var a=e.result&&e.result.error||i.instant("error_uploading_files");n.apiMiddleware.apiHandler.error=a})},n.getUrl=function(e){return n.apiMiddleware.getUrl(e)};var c=function(e){var n=a.selectedModalPath.join("");return(e&&e.model.path.join(""))===n},p=function(e){var n=r.location.search.substr(1).split("&").filter(function(n){return e===n.split("=")[0]});return n[0]&&n[0].split("=")[1]||void 0};n.changeLanguage(p("lang")),n.isWindows="Windows"===p("server"),n.fileNavigator.refresh()}])}(angular),function(e){"use strict";angular.module("FileManagerApp").controller("ModalFileManagerCtrl",["$scope","$rootScope","fileNavigator",function(e,n,a){e.reverse=!1,e.predicate=["model.type","model.name"],e.fileNavigator=new a,n.selectedModalPath=[],e.order=function(n){e.reverse=e.predicate[1]===n&&!e.reverse,e.predicate[1]=n},e.select=function(a){n.selectedModalPath=a.model.fullPath().split("/").filter(Boolean),e.modal("selector",!0)},e.selectCurrent=function(){n.selectedModalPath=e.fileNavigator.currentPath,e.modal("selector",!0)},e.selectedFilesAreChildOfPath=function(n){var a=n.model.fullPath();return e.temps.find(function(e){var n=e.model.fullPath();if(a==n)return!0})},n.openNavigator=function(n){e.fileNavigator.currentPath=n,e.fileNavigator.refresh(),e.modal("selector")},n.getSelectedPath=function(){var a="/"+n.selectedModalPath.filter(Boolean).join("/");return e.singleSelection()&&!e.singleSelection().isFolder()&&(a+="/"+e.singleSelection().tempModel.name),a.replace(/\/\//,"/")}}])}(),function(e){"use strict";var n=angular.module("FileManagerApp");n.directive("angularFilemanager",["$parse","fileManagerConfig",function(e,n){return{restrict:"EA",templateUrl:n.tplPath+"/main.html"}}]),n.directive("ngFile",["$parse",function(e){return{restrict:"A",link:function(n,a,r){var i=e(r.ngFile).assign;a.bind("change",function(){n.$apply(function(){i(n,a[0].files)})})}}}]),n.directive("ngRightClick",["$parse",function(e){return function(n,a,r){var i=e(r.ngRightClick);a.bind("contextmenu",function(e){n.$apply(function(){e.preventDefault(),i(n,{$event:e})})})}}])}(),function(e){"use strict";var n=angular.module("FileManagerApp");n.filter("strLimit",["$filter",function(e){return function(n,a,r){return n.length<=a?n:e("limitTo")(n,a)+(r||"...")}}]),n.filter("fileExtension",["$filter",function(e){return function(n){return/\./.test(n)&&e("strLimit")(n.split(".").pop(),3,"..")||""}}]),n.filter("formatDate",["$filter",function(){return function(e){return e instanceof Date?e.toISOString().substring(0,19).replace("T"," "):(e.toLocaleString||e.toString).apply(e)}}]),n.filter("humanReadableFileSize",["$filter","fileManagerConfig",function(e,n){var a=[" kB"," MB"," GB"," TB","PB","EB","ZB","YB"],r=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];return function(e){var i=-1,t=e;do{t/=1024,i++}while(t>1024);var l=n.useBinarySizePrefixes?r[i]:a[i];return Math.max(t,.1).toFixed(1)+" "+l}}])}(),function(e){"use strict";e.module("FileManagerApp").provider("fileManagerConfig",function(){var n={appName:"angular-filemanager v1.5",defaultLang:"en",multiLang:!0,listUrl:"bridges/php/handler.php",uploadUrl:"bridges/php/handler.php",uploadResumeSizeUrl:"bridges/php/handler.php",renameUrl:"bridges/php/handler.php",copyUrl:"bridges/php/handler.php",moveUrl:"bridges/php/handler.php",removeUrl:"bridges/php/handler.php",editUrl:"bridges/php/handler.php",getContentUrl:"bridges/php/handler.php",createFolderUrl:"bridges/php/handler.php",downloadFileUrl:"bridges/php/handler.php",downloadMultipleUrl:"bridges/php/handler.php",compressUrl:"bridges/php/handler.php",extractUrl:"bridges/php/handler.php",permissionsUrl:"bridges/php/handler.php",installUrl:"bridges/php/handler.php",installUrlUrl:"bridges/php/handler.php",downloadUrl:"bridges/php/handler.php",downloadUrlUrl:"bridges/php/handler.php",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,install:!0,install_url:!0,download_url:!0,pickFiles:!1,pickFolders:!1},multipleDownloadFileName:"angular-filemanager.zip",filterFileExtensions:[],showExtensionIcons:!0,showSizeForDirectories:!1,useBinarySizePrefixes:!1,downloadFilesByAjax:!0,previewImagesInModal:!0,enablePermissionsRecursive:!0,compressAsync:!1,extractAsync:!1,pickCallback:null,resumeChunkSize:10485760,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:/\.(tgz|7z|bz2|xz|gz|tar|rar|g?zip)$/i,isInstallableFilePattern:/\.(pkg)$/i,tplPath:"src/templates"};return{$get:function(){return n},set:function(a){e.extend(n,a)}}})}(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",file_name:"File name",folder_name:"Folder name",install_url:"Install URL",download_url:"Download URL",url:"URL",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",save:"Save",copy:"Copy",rename:"Rename",extract:"Extract",compress:"Compress",install:"Install",install_with_alldebrid:"Install via AllDebrid",install_with_realdebrid:"Install via Real-Debrid",install_enable_rpi:"Install directly from URL",install_use_disk_cache:"Enable caching on disk",download_with_alldebrid:"Install via AllDebrid",download_with_realdebrid:"Install via Real-Debrid",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_installing:"An error occurred installing the file",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",error_installing_url:"An error occurred installing url",error_download_url:"An error occurred downloading url",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",file_name:"Bestandsnaam",folder_name:"Map naam",install_url:"Installeren URL",download_url:"Download URL",url:"URL",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",save:"Bewerken",copy:"Kopiëren",rename:"Hernoemen",extract:"Uitpakken",compress:"Inpakken",install:"Installeren",install_with_alldebrid:"Installeren via AllDebrid",install_with_realdebrid:"Installeren via Real-Debrid",install_enable_rpi:"Rechtstreeks vanaf URL installeren",install_use_disk_cache:"Schakel caching op schijf in",download_with_alldebrid:"Download via AllDebrid",download_with_realdebrid:"Download via Real-Debrid",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",error_installing_url:"Er is een fout opgetreden bij het installeren van de URL",error_download_url:"An error occurred downloading url",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:"צור",file_name:"שם הקובץ",folder_name:"שם תיקייה",install_url:"להתקין URL",download_url:"הורד URL",url:"URL",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:"ערוך",save:"ערוך",copy:"העתק",rename:"שנה שם",extract:"חלץ",compress:"כווץ",install:"להתקין",install_with_alldebrid:"התקן דרך AllDebrid",install_with_realdebrid:"התקן דרך Real-Debrid",install_enable_rpi:"התקן ישירות מ-URL",install_use_disk_cache:"אפשר אחסון במטמון בדיסק",download_with_alldebrid:"הורד via AllDebrid",download_with_realdebrid:"הורד via Real-Debrid",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:"התרחשה שגיאה בעת העלאת הקבצים",error_installing_url:"אירעה שגיאה בהתקנת URL",error_download_url:"אירעה שגיאה בהורדת כתובת ה-URL",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",file_name:"Nome do arquivo",folder_name:"Nome da pasta",install_url:"Instalar URL",download_url:"Baixar URL",url:"URL",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",save:"Editar",copy:"Copiar",rename:"Renomear",extract:"Extrair",compress:"Comprimir",install:"Instalar",install_with_alldebrid:"Instalar via AllDebrid",install_with_realdebrid:"Instalar via Real-Debrid",install_enable_rpi:"Instalar directamente desde la URL",install_use_disk_cache:"Habilitar cache no disco",download_with_alldebrid:"Baixe via AllDebrid",download_with_realdebrid:"Baixe via Real-Debrid",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",error_installing_url:"Ocorreu um erro ao instalar o URL",error_download_url:"Ocorreu um erro ao baixar o URL.",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",file_name:"Nombre del archivo",folder_name:"Nombre de la carpeta",install_url:"Instalar URL",download_url:"Descargar URL",url:"URL",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",save:"Editar",copy:"Copiar",rename:"Renombrar",extract:"Extraer",compress:"Comprimir",install:"Instalar",install_with_alldebrid:"Instalar a través de AllDebrid",install_with_realdebrid:"Instalar a través de Real-Debrid",install_enable_rpi:"Instalar directamente desde la URL",install_use_disk_cache:"Habilitar el almacenamiento en caché en el disco",download_with_alldebrid:"Descargar a través de AllDebrid",download_with_realdebrid:"Descargar a través de Real-Debrid",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",error_installing_url:"Ocurrió un error al instalar la URL",error_download_url:"Se produjo un error al descargar la URL.",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",file_name:"Nom de fichier",folder_name:"Nom du dossier",install_url:"Installer URL",download_url:"Télécharger URL",url:"URL",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",save:"Éditer",copy:"Copier",rename:"Renommer",extract:"Extraire",compress:"Compresser",install:"Installer",install_with_alldebrid:"Installer via AllDebrid",install_with_realdebrid:"Installer via Real-Debrid",install_enable_rpi:"Installer directement à partir de l'URL",install_use_disk_cache:"Activer la mise en cache sur le disque",download_with_alldebrid:"Télécharger via AllDebrid",download_with_realdebrid:"Télécharger via Real-Debrid",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",error_installing_url:"Une erreur s'est produite lors de l'installation de l'URL",error_download_url:"Une erreur s'est produite lors du téléchargement de l'URL.",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",file_name:"Dateiname",folder_name:"Verzeichnisname",install_url:"Installieren URL",download_url:"Herunterladen URL",url:"URL",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",save:"Bearbeiten",copy:"Kopieren",rename:"Umbenennen",extract:"Entpacken",compress:"Komprimieren",install:"Installieren",install_with_alldebrid:"Installation über AllDebrid",install_with_realdebrid:"Installation über Real-Debrid",install_enable_rpi:"Direkt von der URL installieren",install_use_disk_cache:"Aktivieren Sie das Caching auf der Festplatte",download_with_alldebrid:"Herunterladen via AllDebrid",download_with_realdebrid:"Herunterladen via Real-Debrid",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",error_installing_url:"Beim Installieren der URL ist ein Fehler aufgetreten",error_download_url:"Beim Herunterladen der URL 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ť",file_name:"Názov súboru",folder_name:"Názov priećinka",install_url:"Inštalácia URL",download_url:"Stiahnuť URL",url:"URL",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ť",save:"Upraviť",copy:"Kopírovať",rename:"Premenovať",extract:"Rozbaliť",compress:"Komprimovať",install:"Inštalácia",install_with_alldebrid:"Nainštalujte cez AllDebrid",install_with_realdebrid:"Nainštalujte cez Real-Debrid",install_enable_rpi:"Nainštalujte priamo z adresy URL",install_use_disk_cache:"Povoliť ukladanie do vyrovnávacej pamäte na disku",download_with_alldebrid:"Stiahnuť cez AllDebrid",download_with_realdebrid:"Stiahnuť cez Real-Debrid",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",error_installing_url:"Pri inštalácii adresy URL sa vyskytla chyba",error_download_url:"Pri sťahovaní adresy URL sa vyskytla chyba",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:"创建",file_name:"文件名",folder_name:"文件夹名称",install_url:"安装 URL",download_url:"下载地址",url:"URL",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:"编辑",save:"编辑",copy:"复制",rename:"重命名",extract:"解压",compress:"压缩",install:"安装",install_with_alldebrid:"通过 AllDebrid 安装",install_with_realdebrid:"通过 Real-Debrid 安装",install_enable_rpi:"直接从 URL 安装",install_use_disk_cache:"启用磁盘缓存",download_with_alldebrid:"通过 AllDebrid 下载",download_with_realdebrid:"通过 Real-Debrid 下载",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:"上传文件出错",error_installing_url:"安装 URL 时出错",error_download_url:"下载网址时出错",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:"建立",file_name:"檔案名稱",folder_name:"資料匣名稱",install_url:"安裝 URL",download_url:"下載地址",url:"URL",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:"存檔",save:"存檔",copy:"複製",rename:"更改名稱",extract:"解壓",compress:"壓縮",install:"安裝",install_with_alldebrid:"通過 AllDebrid 安裝",install_with_realdebrid:"通過 Real-Debrid 安裝",install_enable_rpi:"直接從 URL 安裝",install_use_disk_cache:"啟用磁碟快取",download_with_alldebrid:"透過 AllDebrid 下載",download_with_realdebrid:"透過 Real-Debrid 下載",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:"上傳檔案出錯",error_installing_url:"安裝 URL 時出錯",error_download_url:"下載網址時發生錯誤",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:"Создать",file_name:"Имя файла",folder_name:"Имя папки",install_url:"установить URL",download_url:"Скачать URL",url:"URL",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:"Редактировать",save:"Редактировать",copy:"Скопировать",rename:"Переименовать",extract:"Извлечь",compress:"Сжать",install:"Установить",install_with_alldebrid:"Установить через AllDebrid",install_with_realdebrid:"Установить через Real-Debrid",install_enable_rpi:"Установить напрямую с URL-адреса",install_use_disk_cache:"Включить кэширование на диске",download_with_alldebrid:"Скачать через AllDebrid",download_with_realdebrid:"Скачать через Real-Debrid",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:"Произошла ошибка при загрузке",error_installing_url:"Произошла ошибка при установке URL",error_download_url:"Произошла ошибка при загрузке URL-адреса.",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:"Створити",file_name:"Ім'я файлу",folder_name:"Ім'я папки",install_url:"встановити URL",download_url:"Скачати URL",url:"URL",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:"Редагувати",save:"Редагувати",copy:"Копіювати",rename:"Переіменувати",extract:"Розархівувати",compress:"Архівувати",install:"встановити",install_with_alldebrid:"Встановити через AllDebrid",install_with_realdebrid:"Встановити через Real-Debrid",install_enable_rpi:"Встановити безпосередньо з URL",install_use_disk_cache:"Увімкнути кешування на диску",download_with_alldebrid:"Встановлення через AllDebrid",download_with_realdebrid:"Встановлення через Real-Debrid",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:"Виникла помилка при завантаженні",error_installing_url:"Під час встановлення URL сталася помилка",error_download_url:"Сталася помилка під час завантаження URL-адреси",sure_to_start_compression_with:"Дійсно стиснути",owner:"Власник",group:"Група",others:"Інші",read:"Читання",write:"Запис",exec:"Виконання",original:"За замовчуванням",changes:"Зміни",recursive:"Рекурсивно",preview:"Перегляд",open:"Відкрити",these_elements:"усього {{total}} елементів",new_folder:"Нова папка",download_as_zip:"Скачати 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",file_name:"Dosya adı",folder_name:"Klasör adı",install_url:"Düzenlemek URL",download_url:"Dİndirme URL'si",url:"URL",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",save:"Düzenle",copy:"Kopyala",rename:"Yeniden Adlandır",extract:"Çıkart",compress:"Sıkıştır",install:"Düzenlemek",install_with_alldebrid:"AllDebrid aracılığıyla yükleyin",install_with_realdebrid:"Real-Debrid aracılığıyla yükleyin",install_enable_rpi:"Doğrudan URL'den yükleyin",install_use_disk_cache:"Diskte önbelleğe almayı etkinleştir",download_with_alldebrid:"AllDebrid üzerinden yükleyin",download_with_realdebrid:"Real-Debrid üzerinden yükleyin.",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",error_installing_url:"URL yüklenirken bir hata oluştu",error_download_url:"URL indirilirken 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:"ساختن",file_name:"نام فایل",folder_name:"نام پوشه",install_url:"نصب URL",download_url:"دانلود URL",url:"URL",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:"ویرایش",save:"ویرایش",copy:"کپی",rename:"تغییر نام",extract:"خروج از حالت فشرده",compress:"فشرده سازی",install:"ثَبَّتَ",install_with_alldebrid:"از طریق AllDebrid نصب کنید",install_with_realdebrid:"از طریق Real-Debrid نصب کنید",install_enable_rpi:"مستقیماً از URL نصب کنید",install_use_disk_cache:"کش روی دیسک را فعال کنید",download_with_alldebrid:"دانلود از طریق AllDebrid",download_with_realdebrid:"دانلود از طریق Real-Debrid",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:"در آپلود فایل خطایی رخ داد",error_installing_url:"هنگام نصب URL خطایی روی داد",error_download_url:"خطایی در دانلود آدرس اینترنتی رخ داده است",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",file_name:"Nazwa pliku",folder_name:"Nazwa folderu",install_url:"Zainstalować URL",download_url:"Pobierz adres URL",url:"URL",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",save:"Edycja",copy:"Kopiuj",rename:"Zmień nazwę",extract:"Rozpakuj",compress:"Skompresuj",install:"Zainstalować",install_with_alldebrid:"Zainstaluj przez AllDebrid",install_with_realdebrid:"Zainstaluj przez Real-Debrid",install_enable_rpi:"Zainstaluj bezpośrednio z adresu URL",install_use_disk_cache:"Włącz buforowanie na dysku",download_with_alldebrid:"Pobierz przez AllDebrid",download_with_realdebrid:"Pobierz przez Real-Debrid",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",error_installing_url:"Podczas instalowania adresu URL wystąpił błąd",error_download_url:"Wystąpił błąd podczas pobierania adresu URL",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",file_name:"Nome del file",folder_name:"Nome cartella",install_url:"Installare URL",download_url:"Scarica l'URL",url:"URL",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",save:"Modifica",copy:"Copia",rename:"Rinomina",extract:"Estrai",compress:"Comprimi",install:"Installare",install_with_alldebrid:"Installa tramite AllDebrid",install_with_realdebrid:"Installa tramite Real-Debrid",install_enable_rpi:"Installa direttamente dall'URL",install_use_disk_cache:"Abilita la memorizzazione nella cache su disco",download_with_alldebrid:"Scarica tramite AllDebrid",download_with_realdebrid:"Scarica tramite Real-Debrid",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",error_installing_url:"Si è verificato un errore durante l'installazione dell'URL",error_download_url:"Si è verificato un errore durante il download dell'URL",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,n,a,r,i,t){e.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var l=function(){this.inprocess=!1,this.asyncSuccess=!1,this.error=""};return l.prototype.deferredHandler=function(e,n,a,r){return e&&"object"==typeof e||(this.error="Error %s - Bridge response error, please check the API docs or this ajax response.".replace("%s",a)),404==a&&(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&&r&&(this.error=r),this.error?n.reject(e):n.resolve(e)},l.prototype.list=function(a,r,i,t){var l=this,o=i||l.deferredHandler,s=n.defer(),d={action:"list",path:r,fileExtensions:t&&t.length?t:void 0};return l.inprocess=!0,l.error="",e.post(a,d).then(function(e){o(e.data,s,e.status)},function(e){o(e.data,s,e.status,"Unknown error listing, check the response")}).finally(function(){l.inprocess=!1}),s.promise},l.prototype.copy=function(a,i,t,l){var o=this,s=n.defer(),d={action:"copy",items:i,newPath:t};return l&&1===i.length&&(d.singleFilename=l),o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_copying"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.move=function(a,i,t){var l=this,o=n.defer(),s={action:"move",items:i,newPath:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_moving"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.remove=function(a,i){var t=this,l=n.defer(),o={action:"remove",items:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_deleting"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.install=function(a,i){var t=this,l=n.defer(),o={action:"install",items:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_installing"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.upload=function(e,a,r,i,l){var o=this,s=n.defer();o.inprocess=!0,o.progress=0,o.error="",o.total_size=0,o.total_loaded=0,o.status=[];for(d=0;d<l.length;d++)o.status[l[d].name]={},o.total_size+=l[d].size;for(var d=0;d<l.length;d++){var c={destination:i,file:l[d]};o.status[l[d].name].size=l[d].size,o.status[l[d].name].loaded=0,o.status.push(o.status[l[d].name]),t.upload({url:e,data:c,resumeSizeUrl:a+"?destination="+encodeURIComponent(i)+"&filename="+encodeURIComponent(l[d].name),resumeChunkSize:r}).then(function(e){o.total_loaded>=o.total_size&&o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,"Unknown error uploading files")},function(e){o.status[e.config._file.name].loaded=e.loaded;for(var n=0,a=0;a<o.status.length;a++)n+=o.status[a].loaded;o.total_loaded=n,o.progress=Math.min(100,parseInt(100*n/o.total_size))-1}).finally(function(){o.total_loaded>=o.total_size&&(o.inprocess=!1,o.progress=0,o.status=[])})}return s.promise},l.prototype.getContent=function(a,i){var t=this,l=n.defer(),o={action:"getContent",item:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_getting_content"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.edit=function(a,i,t){var l=this,o=n.defer(),s={action:"edit",item:i,content:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_modifying"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.rename=function(a,i,t){var l=this,o=n.defer(),s={action:"rename",item:i,newItemPath:t};return l.inprocess=!0,l.error="",e.post(a,s).then(function(e){l.deferredHandler(e.data,o,e.status)},function(e){l.deferredHandler(e.data,o,e.status,r.instant("error_renaming"))}).finally(function(){l.inprocess=!1}),o.promise},l.prototype.getUrl=function(e,n){return n&&[e,i({action:"download",path:n})].join("?")},l.prototype.download=function(i,t,l,o,s){var d=this,c=this.getUrl(i,t);if(!o||s||!a.saveAs)return!a.saveAs&&a.console.log("Your browser dont support ajax download, downloading by default"),!!a.open(c,"_blank","");var p=n.defer();return d.inprocess=!0,e.get(c).then(function(e){var n=new a.Blob([e.data]);p.resolve(e.data),a.saveAs(n,l)},function(e){d.deferredHandler(e.data,p,e.status,r.instant("error_downloading"))}).finally(function(){d.inprocess=!1}),p.promise},l.prototype.downloadMultiple=function(t,l,o,s,d){var c=this,p=n.defer(),u=[t,i({action:"downloadMultiple",items:l,toFilename:o})].join("?");return s&&!d&&a.saveAs?(c.inprocess=!0,e.get(t).then(function(e){var n=new a.Blob([e.data]);p.resolve(e.data),a.saveAs(n,o)},function(e){c.deferredHandler(e.data,p,e.status,r.instant("error_downloading"))}).finally(function(){c.inprocess=!1}),p.promise):(!a.saveAs&&a.console.log("Your browser dont support ajax download, downloading by default"),!!a.open(u,"_blank",""))},l.prototype.compress=function(a,i,t,l){var o=this,s=n.defer(),d={action:"compress",items:i,destination:l,compressedFilename:t};return o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_compressing"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.extract=function(a,i,t,l){var o=this,s=n.defer(),d={action:"extract",item:i,destination:l,folderName:t};return o.inprocess=!0,o.error="",e.post(a,d).then(function(e){o.deferredHandler(e.data,s,e.status)},function(e){o.deferredHandler(e.data,s,e.status,r.instant("error_extracting"))}).finally(function(){o.inprocess=!1}),s.promise},l.prototype.changePermissions=function(a,i,t,l,o){var s=this,d=n.defer(),c={action:"changePermissions",items:i,perms:t,permsCode:l,recursive:!!o};return s.inprocess=!0,s.error="",e.post(a,c).then(function(e){s.deferredHandler(e.data,d,e.status)},function(e){s.deferredHandler(e.data,d,e.status,r.instant("error_changing_perms"))}).finally(function(){s.inprocess=!1}),d.promise},l.prototype.createFolder=function(a,i){var t=this,l=n.defer(),o={action:"createFolder",newPath:i};return t.inprocess=!0,t.error="",e.post(a,o).then(function(e){t.deferredHandler(e.data,l,e.status)},function(e){t.deferredHandler(e.data,l,e.status,r.instant("error_creating_folder"))}).finally(function(){t.inprocess=!1}),l.promise},l.prototype.installUrl=function(a,i,t,l,o,s){var d=this,c=n.defer(),p={action:"installUrl",url:i,use_alldebrid:t,use_realdebrid:l,enable_rpi:o,use_disk_cache:s};return d.inprocess=!0,d.error="",e.post(a,p).then(function(e){d.deferredHandler(e.data,c,e.status)},function(e){d.deferredHandler(e.data,c,e.status,r.instant("error_installing_url"))}).finally(function(){d.inprocess=!1}),c.promise},l.prototype.downloadUrl=function(a,i,t,l,o){var s=this,d=n.defer(),c={action:"downloadUrl",url:i,dest:t,use_alldebrid:l,use_realdebrid:o};return s.inprocess=!0,s.error="",e.post(a,c).then(function(e){s.deferredHandler(e.data,d,e.status)},function(e){s.deferredHandler(e.data,d,e.status,r.instant("error_download_url"))}).finally(function(){s.inprocess=!1}),d.promise},l}])}(),function(e){"use strict";angular.module("FileManagerApp").service("apiMiddleware",["$window","fileManagerConfig","apiHandler",function(e,n,a){var r=function(){this.apiHandler=new a};return r.prototype.getPath=function(e){return"/"+e.join("/")},r.prototype.getFileList=function(e){return(e||[]).map(function(e){return e&&e.model.fullPath()})},r.prototype.getFilePath=function(e){return e&&e.model.fullPath()},r.prototype.list=function(e,a){return this.apiHandler.list(n.listUrl,this.getPath(e),a)},r.prototype.copy=function(e,a){var r=this.getFileList(e),i=1===r.length?e[0].tempModel.name:void 0;return this.apiHandler.copy(n.copyUrl,r,this.getPath(a),i)},r.prototype.move=function(e,a){var r=this.getFileList(e);return this.apiHandler.move(n.moveUrl,r,this.getPath(a))},r.prototype.remove=function(e){var a=this.getFileList(e);return this.apiHandler.remove(n.removeUrl,a)},r.prototype.install=function(e){var a=this.getFileList(e);return this.apiHandler.install(n.installUrl,a)},r.prototype.downloadUrl=function(e){var a=this.getFileList(e);return this.apiHandler.downloadUrl(n.downloadUrl,a)},r.prototype.upload=function(a,r){if(!e.FormData)throw new Error("Unsupported browser version");var i=this.getPath(r);return this.apiHandler.upload(n.uploadUrl,n.uploadResumeSizeUrl,n.resumeChunkSize,i,a)},r.prototype.getContent=function(e){var a=this.getFilePath(e);return this.apiHandler.getContent(n.getContentUrl,a)},r.prototype.edit=function(e){var a=this.getFilePath(e);return this.apiHandler.edit(n.editUrl,a,e.tempModel.content)},r.prototype.rename=function(e){var a=this.getFilePath(e),r=e.tempModel.fullPath();return this.apiHandler.rename(n.renameUrl,a,r)},r.prototype.getUrl=function(e){var a=this.getFilePath(e);return this.apiHandler.getUrl(n.downloadFileUrl,a)},r.prototype.download=function(e,a){var r=this.getFilePath(e),i=e.model.name;if(!e.isFolder())return this.apiHandler.download(n.downloadFileUrl,r,i,n.downloadFilesByAjax,a)},r.prototype.downloadMultiple=function(e,a){var r=this.getFileList(e),i=(new Date).getTime().toString().substr(8,13)+"-"+n.multipleDownloadFileName;return this.apiHandler.downloadMultiple(n.downloadMultipleUrl,r,i,n.downloadFilesByAjax,a)},r.prototype.compress=function(e,a,r){var i=this.getFileList(e);return this.apiHandler.compress(n.compressUrl,i,a,this.getPath(r))},r.prototype.extract=function(e,a,r){var i=this.getFilePath(e);return this.apiHandler.extract(n.extractUrl,i,a,this.getPath(r))},r.prototype.changePermissions=function(e,a){var r=this.getFileList(e),i=a.tempModel.perms.toCode(),t=a.tempModel.perms.toOctal(),l=!!a.tempModel.recursive;return this.apiHandler.changePermissions(n.permissionsUrl,r,i,t,l)},r.prototype.createFolder=function(e){var a=e.tempModel.fullPath();return this.apiHandler.createFolder(n.createFolderUrl,a)},r.prototype.installUrl=function(e){var a=e.tempModel.name,r=e.tempModel.use_alldebrid,i=e.tempModel.use_realdebrid,t=e.tempModel.use_disk_cache,l=e.tempModel.enable_rpi;return this.apiHandler.installUrl(n.installUrlUrl,a,r,i,l,t)},r.prototype.downloadUrl=function(e){var a=e.tempModel.content,r=e.tempModel.path+e.tempModel.desc,i=e.tempModel.use_alldebrid,t=e.tempModel.use_realdebrid;return this.apiHandler.downloadUrl(n.downloadUrlUrl,a,r,i,t)},r}])}(),function(e){"use strict";angular.module("FileManagerApp").service("fileNavigator",["apiMiddleware","fileManagerConfig","item",function(e,n,a){var r=function(){this.apiMiddleware=new e,this.requesting=!1,this.fileList=[],this.currentPath=this.getBasePath(),this.history=[],this.error="",this.onRefresh=function(){}};return r.prototype.getBasePath=function(){var e=(n.basePath||"").replace(/^\//,"");return e.trim()?e.split("/"):[]},r.prototype.deferredHandler=function(e,n,a,r){return e&&"object"==typeof e||(this.error="Error %s - Bridge response error, please check the API docs or this ajax response.".replace("%s",a)),404==a&&(this.error="Error 404 - Backend bridge is not working, please check the ajax response."),200==a&&(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&&r&&(this.error=r),this.error?n.reject(e):n.resolve(e)},r.prototype.list=function(){return this.apiMiddleware.list(this.currentPath,this.deferredHandler.bind(this))},r.prototype.refresh=function(){var e=this;e.currentPath.length||(e.currentPath=this.getBasePath());var n=e.currentPath.join("/");return e.requesting=!0,e.fileList=[],e.list().then(function(r){e.fileList=(r.result||[]).map(function(n){return new a(n,e.currentPath)}),e.buildTree(n),e.onRefresh()}).finally(function(){e.requesting=!1})},r.prototype.buildTree=function(e){function n(e,a,r){var i=r?r+"/"+a.model.name:a.model.name;if(e.name&&e.name.trim()&&0!==r.trim().indexOf(e.name)&&(e.nodes=[]),e.name!==r)e.nodes.forEach(function(e){n(e,a,r)});else{for(var t in e.nodes)if(e.nodes[t].name===i)return;e.nodes.push({item:a,name:i,nodes:[]})}e.nodes=e.nodes.sort(function(e,n){return e.name.toLowerCase()<n.name.toLowerCase()?-1:e.name.toLowerCase()===n.name.toLowerCase()?0:1})}function r(e,n){n.push(e);for(var a in e.nodes)r(e.nodes[a],n)}var i=[],t={};!this.history.length&&this.history.push({name:this.getBasePath()[0]||"",nodes:[]}),r(this.history[0],i),(t=function(e,n){return e.filter(function(e){return e.name===n})[0]}(i,e))&&(t.nodes=[]);for(var l in this.fileList){var o=this.fileList[l];o instanceof a&&o.isFolder()&&n(this.history[0],o,e)}},r.prototype.folderClick=function(e){this.currentPath=[],e&&e.isFolder()&&(this.currentPath=e.model.fullPath().split("/").splice(1)),this.refresh()},r.prototype.upDir=function(){this.currentPath[0]&&(this.currentPath=this.currentPath.slice(0,-1),this.refresh())},r.prototype.goTo=function(e){this.currentPath=this.currentPath.slice(0,e+1),this.refresh()},r.prototype.fileNameExists=function(e){return this.fileList.find(function(n){return e&&n.model.name.trim()===e.trim()})},r.prototype.listHasFolders=function(){return this.fileList.find(function(e){return"dir"===e.model.type})},r.prototype.getCurrentFolderName=function(){return this.currentPath.slice(-1)[0]||"/"},r}])}(),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 n=isNaN(e)?this.convertfromCode(e):this.convertfromOctal(e);if(!n)throw new Error("Invalid chmod input data (%s)".replace("%s",e));this.owner=n.owner,this.group=n.group,this.others=n.others}};return e.prototype.toOctal=function(e,n){var a=[];return["owner","group","others"].forEach(function(e,n){a[n]=this[e].read&&this.octalValues.read||0,a[n]+=this[e].write&&this.octalValues.write||0,a[n]+=this[e].exec&&this.octalValues.exec||0}.bind(this)),(e||"")+a.join("")+(n||"")},e.prototype.toCode=function(e,n){var a=[];return["owner","group","others"].forEach(function(e,n){a[n]=this[e].read&&this.codeValues.read||"-",a[n]+=this[e].write&&this.codeValues.write||"-",a[n]+=this[e].exec&&this.codeValues.exec||"-"}.bind(this)),(e||"")+a.join("")+(n||"")},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 n=[],a=e.match(/.{1,3}/g);for(var r in a){var i=this.getRwxObj();i.read=/r/.test(a[r]),i.write=/w/.test(a[r]),i.exec=/x|t/.test(a[r]),n.push(i)}return{owner:n[0],group:n[1],others:n[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 n=[],a=e.match(/.{1}/g);for(var r in a){var i=this.getRwxObj();i.read=/[4567]/.test(a[r]),i.write=/[2367]/.test(a[r]),i.exec=/[1357]/.test(a[r]),n.push(i)}return{owner:n[0],group:n[1],others:n[2]}}},e})}(),function(e){"use strict";e.module("FileManagerApp").factory("item",["fileManagerConfig","chmod",function(n,a){var r=function(n,r){var i={name:n&&n.name||"",path:r||[],type:n&&n.type||"file",size:n&&parseInt(n.size||0),date:function(e){var n=(e||"").toString().split(/[- :]/);return new Date(n[0],n[1]-1,n[2],n[3],n[4],n[5])}(n&&n.date),perms:new a(n&&n.rights),content:n&&n.content||"",desc:n&&n.desc||"",recursive:!1,use_alldebrid:!1,use_realdebrid:!1,use_disk_cache:!1,enable_rpi:!0,fullPath:function(){return("/"+this.path.filter(Boolean).join("/")+"/"+this.name).replace(/\/\//,"/")}};this.error="",this.processing=!1,this.model=e.copy(i),this.tempModel=e.copy(i)};return r.prototype.update=function(){e.extend(this.model,e.copy(this.tempModel))},r.prototype.revert=function(){e.extend(this.tempModel,e.copy(this.model)),this.error=""},r.prototype.isFolder=function(){return"dir"===this.model.type},r.prototype.isEditable=function(){return!this.isFolder()&&n.isEditableFilePattern.test(this.model.name)},r.prototype.isImage=function(){return n.isImageFilePattern.test(this.model.name)},r.prototype.isCompressible=function(){return!0},r.prototype.isExtractable=function(){return!this.isFolder()&&n.isExtractableFilePattern.test(this.model.name)},r.prototype.isInstallable=function(){return!this.isFolder()&&n.isInstallableFilePattern.test(this.model.name)},r.prototype.isSelectable=function(){return this.isFolder()&&n.allowedActions.pickFolders||!this.isFolder()&&n.allowedActions.pickFiles},r}])}(angular),angular.module("FileManagerApp").run(["$templateCache",function(e){e.put("src/templates/current-folder-breadcrumb.html",'<ol class="breadcrumb">\n <li>\n <a href="" ng-click="fileNavigator.goTo(-1)">\n {{"filemanager" | translate}}\n </a>\n </li>\n <li ng-repeat="(key, dir) in fileNavigator.currentPath track by key" ng-class="{\'active\':$last}" class="animated fast fadeIn">\n <a href="" ng-show="!$last" ng-click="fileNavigator.goTo(key)">\n {{dir | strLimit : 8}}\n </a>\n <span ng-show="$last">\n {{dir | strLimit : 12}}\n </span>\n </li>\n</ol>'),e.put("src/templates/item-context-menu.html",'<div id="context-menu" class="dropdown clearfix animated fast fadeIn">\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="temps.length">\n\n <li ng-show="singleSelection() && singleSelection().isFolder()">\n <a href="" tabindex="-1" ng-click="smartClick(singleSelection())">\n <i class="glyphicon glyphicon-folder-open"></i> {{\'open\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.pickCallback && singleSelection() && singleSelection().isSelectable()">\n <a href="" tabindex="-1" ng-click="config.pickCallback(singleSelection().model)">\n <i class="glyphicon glyphicon-hand-up"></i> {{\'select_this\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.download && !selectionHas(\'dir\') && singleSelection()">\n <a href="" tabindex="-1" ng-click="download()">\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.downloadMultiple && !singleSelection()">\n <a href="" tabindex="-1" ng-click="download()">\n <i class="glyphicon glyphicon-cloud-download"></i> {{\'download_as_zip\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.preview && singleSelection().isImage() && singleSelection()">\n <a href="" tabindex="-1" ng-click="openImagePreview()">\n <i class="glyphicon glyphicon-picture"></i> {{\'view_item\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.rename && singleSelection()">\n <a href="" tabindex="-1" ng-click="modal(\'rename\')">\n <i class="glyphicon glyphicon-edit"></i> {{\'rename\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.move">\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'move\')">\n <i class="glyphicon glyphicon-arrow-right"></i> {{\'move\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.copy">\n <a href="" tabindex="-1" ng-click="modalWithPathSelector(\'copy\')">\n <i class="glyphicon glyphicon-log-out"></i> {{\'copy\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.edit && singleSelection() && singleSelection().isEditable()">\n <a href="" tabindex="-1" ng-click="openEditItem()">\n <i class="glyphicon glyphicon-pencil"></i> {{\'edit\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.changePermissions">\n <a href="" tabindex="-1" ng-click="modal(\'changepermissions\')">\n <i class="glyphicon glyphicon-lock"></i> {{\'permissions\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.compress">\n <a href="" tabindex="-1" ng-click="modal(\'compress\')">\n <i class="glyphicon glyphicon-compressed"></i> {{\'compress\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.extract && singleSelection() && singleSelection().isExtractable()">\n <a href="" tabindex="-1" ng-click="modal(\'extract\')">\n <i class="glyphicon glyphicon-export"></i> {{\'extract\' | translate}}\n </a>\n </li>\n\n <li ng-show="config.allowedActions.install && isInstallable()">\n <a href="" tabindex="-1" ng-click="install()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'install\' | translate}}\n </a>\n </li>\n\n <li class="divider" ng-show="config.allowedActions.remove"></li>\n \n <li ng-show="config.allowedActions.remove">\n <a href="" tabindex="-1" ng-click="modal(\'remove\')">\n <i class="glyphicon glyphicon-trash"></i> {{\'remove\' | translate}}\n </a>\n </li>\n\n </ul>\n\n <ul class="dropdown-menu dropdown-right-click" role="menu" aria-labelledby="dropdownMenu" ng-show="!temps.length">\n <li ng-show="config.allowedActions.createFolder">\n <a href="" tabindex="-1" ng-click="modal(\'newfolder\') && prepareNewFolder()">\n <i class="glyphicon glyphicon-plus"></i> {{\'new_folder\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.upload">\n <a href="" tabindex="-1" ng-click="modal(\'uploadfile\')">\n <i class="glyphicon glyphicon-cloud-upload"></i> {{\'upload_files\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.install_url">\n <a href="" tabindex="-1" ng-click="modal(\'install_url\') && prepareInstallUrl()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'install_url\' | translate}}\n </a>\n </li>\n <li ng-show="config.allowedActions.download_url">\n <a href="" tabindex="-1" ng-click="modal(\'download_url\') && prepareDownloadUrl()">\n <i class="glyphicon glyphicon-wrench"></i> {{\'download_url\' | translate}}\n </a>\n </li>\n </ul>\n</div>'),e.put("src/templates/main-icons.html",'<div class="iconset noselect">\n <div class="item-list clearfix" ng-click="selectOrUnselect(null, $event)" ng-right-click="selectOrUnselect(null, $event)" prevent="true">\n <div class="col-120" ng-repeat="item in $parent.fileList = (fileNavigator.fileList | filter: {model:{name: query}})" ng-show="!fileNavigator.requesting && !fileNavigator.error">\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)}">\n <div class="item-icon">\n <i class="glyphicon glyphicon-folder-open" ng-show="item.model.type === \'dir\'"></i>\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>\n </div>\n {{item.model.name | strLimit : 11 }}\n </a>\n </div>\n </div>\n\n <div ng-show="fileNavigator.requesting">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </div>\n\n <div class="alert alert-warning" ng-show="!fileNavigator.requesting && fileNavigator.fileList.length < 1 && !fileNavigator.error">\n {{"no_files_in_folder" | translate}}...\n </div>\n \n <div class="alert alert-danger" ng-show="!fileNavigator.requesting && fileNavigator.error">\n {{ fileNavigator.error }}\n </div>\n</div>'),e.put("src/templates/main-table-modal.html",'<table class="table table-condensed table-modal-condensed mb0">\n <thead>\n <tr>\n <th>\n <a href="" ng-click="order(\'model.name\')">\n {{"name" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="text-right"></th>\n </tr>\n </thead>\n <tbody class="file-item">\n <tr ng-show="fileNavigator.requesting">\n <td colspan="2">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && !fileNavigator.listHasFolders() && !fileNavigator.error">\n <td>\n {{"no_folders_in_folder" | translate}}...\n </td>\n <td class="text-right">\n <button class="btn btn-sm btn-default" ng-click="fileNavigator.upDir()">{{"go_back" | translate}}</button>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && fileNavigator.error">\n <td colspan="2">\n {{ fileNavigator.error }}\n </td>\n </tr>\n <tr ng-repeat="item in fileNavigator.fileList | orderBy:predicate:reverse" ng-show="!fileNavigator.requesting && item.model.type === \'dir\'" ng-if="!selectedFilesAreChildOfPath(item)">\n <td>\n <a href="" ng-click="fileNavigator.folderClick(item)" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\n <i class="glyphicon glyphicon-folder-close"></i>\n {{item.model.name | strLimit : 32}}\n </a>\n </td>\n <td class="text-right">\n <button class="btn btn-sm btn-default" ng-click="select(item)">\n <i class="glyphicon glyphicon-hand-up"></i> {{"select_this" | translate}}\n </button>\n </td>\n </tr>\n </tbody>\n</table>'),e.put("src/templates/main-table.html",'<table class="table mb0 table-files noselect">\n <thead>\n <tr>\n <th>\n <a href="" ng-click="order(\'model.name\')">\n {{"name" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.name\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-xs" ng-hide="config.hideSize">\n <a href="" ng-click="order(\'model.size\')">\n {{"size" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.size\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-sm hidden-xs" ng-hide="config.hideDate">\n <a href="" ng-click="order(\'model.date\')">\n {{"date" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.date\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n <th class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\n <a href="" ng-click="order(\'model.permissions\')">\n {{"permissions" | translate}}\n <span class="sortorder" ng-show="predicate[1] === \'model.permissions\'" ng-class="{reverse:reverse}"></span>\n </a>\n </th>\n </tr>\n </thead>\n <tbody class="file-item">\n <tr ng-show="fileNavigator.requesting">\n <td colspan="5">\n <div ng-include="config.tplPath + \'/spinner.html\'"></div>\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && fileNavigator.fileList.length < 1 && !fileNavigator.error">\n <td colspan="5">\n {{"no_files_in_folder" | translate}}...\n </td>\n </tr>\n <tr ng-show="!fileNavigator.requesting && fileNavigator.error">\n <td colspan="5">\n {{ fileNavigator.error }}\n </td>\n </tr>\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)}">\n <td>\n <a href="" title="{{item.model.name}} ({{item.model.size | humanReadableFileSize}})">\n <i class="glyphicon glyphicon-folder-close" ng-show="item.model.type === \'dir\'"></i>\n <i class="glyphicon glyphicon-file" ng-show="item.model.type === \'file\'"></i>\n {{item.model.name | strLimit : 64}}\n </a>\n </td>\n <td class="hidden-xs">\n <span ng-show="item.model.type !== \'dir\' || config.showSizeForDirectories">\n {{item.model.size | humanReadableFileSize}}\n </span>\n </td>\n <td class="hidden-sm hidden-xs" ng-hide="config.hideDate">\n {{item.model.date | formatDate }}\n </td>\n <td class="hidden-sm hidden-xs" ng-hide="config.hidePermissions">\n {{item.model.perms.toCode(item.model.type === \'dir\'?\'d\':\'-\')}}\n </td>\n </tr>\n </tbody>\n</table>\n'),e.put("src/templates/main.html",'<div ng-controller="FileManagerCtrl">\n <div ng-include="config.tplPath + \'/navbar.html\'"></div>\n\n <div class="container-fluid">\n <div class="row">\n\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 && fileNavigator.history[0]">\n </div>\n\n <div class="main" ng-class="config.sidebar && fileNavigator.history[0] && \'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">\n <div ng-include="config.tplPath + \'/\' + viewTemplate" class="main-navigation clearfix"></div>\n </div>\n </div>\n </div>\n\n <div ng-include="config.tplPath + \'/modals.html\'"></div>\n <div ng-include="config.tplPath + \'/item-context-menu.html\'"></div>\n</div>\n'),e.put("src/templates/modals.html",'<div class="modal animated fadeIn" id="imagepreview">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"preview" | translate}}</h4>\n </div>\n <div class="modal-body">\n <div class="text-center">\n <img id="imagepreview-target" class="preview" alt="{{singleSelection().model.name}}" ng-class="{\'loading\': apiMiddleware.apiHandler.inprocess}">\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="remove">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="remove()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"confirm" | translate}}</h4>\n </div>\n <div class="modal-body">\n {{\'sure_to_delete\' | translate}} <span ng-include data-src="\'selected-files-msg\'"></span>\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess" autofocus="autofocus">{{"remove" | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="move">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="move()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'move\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'move\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n\n<div class="modal animated fadeIn" id="rename">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="rename()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'rename\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection() && singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'rename\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="copy">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="copy()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'copy_file\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="singleSelection()">\n <label class="radio">{{\'enter_new_name_for\' | translate}} <b>{{singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n </div>\n\n <div ng-include data-src="\'path-selector\'" class="clearfix"></div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"copy" | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="compress">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="compress()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'compress\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <div class="label label-success error-msg">{{\'compression_started\' | translate}}</div>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <div ng-hide="config.allowedActions.compressChooseName">\n {{\'sure_to_start_compression_with\' | translate}} <b>{{singleSelection().model.name}}</b> ?\n </div>\n <div ng-show="config.allowedActions.compressChooseName">\n <label class="radio">\n {{\'enter_file_name_for_compression\' | translate}}\n <span ng-include data-src="\'selected-files-msg\'"></span>\n </label>\n <input class="form-control" ng-model="temp.tempModel.name" autofocus="autofocus">\n </div>\n </div>\n\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'compress\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="extract" ng-init="singleSelection().emptyName()">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="extract()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'extract_item\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <div class="label label-success error-msg">{{\'extraction_started\' | translate}}</div>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <label class="radio">{{\'enter_folder_name_for_extraction\' | translate}} <b>{{singleSelection().model.name}}</b></label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div ng-show="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n <div ng-hide="apiMiddleware.apiHandler.asyncSuccess">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'extract\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="edit" ng-class="{\'modal-fullscreen\': fullscreen}">\n <div class="modal-dialog modal-lg">\n <div class="modal-content">\n <form ng-submit="edit()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <button type="button" class="close fullscreen" ng-click="fullscreen=!fullscreen">\n <i class="glyphicon glyphicon-fullscreen"></i>\n <span class="sr-only">{{\'toggle_fullscreen\' | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'edit_file\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio bold">{{ singleSelection().model.fullPath() }}</label>\n <span class="label label-warning" ng-show="apiMiddleware.apiHandler.inprocess">{{\'loading\' | translate}} ...</span>\n <textarea class="form-control code" ng-model="singleSelection().tempModel.content" ng-show="!apiMiddleware.apiHandler.inprocess" autofocus="autofocus"></textarea>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'close\' | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-show="config.allowedActions.edit" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'save\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="newfolder">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="createFolder()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'new_folder\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'folder_name\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus">\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'create\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="uploadfile">\n <div class="modal-dialog">\n <div class="modal-content">\n <form>\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"upload_files" | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">\n {{"files_will_uploaded_to" | translate}} \n <b>/{{fileNavigator.currentPath.join(\'/\')}}</b>\n </label>\n <button class="btn btn-default btn-block" ngf-select="$parent.addForUpload($files)" ngf-multiple="true">\n {{"select_files" | translate}}\n </button>\n \n <div class="upload-list">\n <ul class="list-group">\n <li class="list-group-item" ng-repeat="(index, uploadFile) in $parent.uploadFileList">\n <button class="btn btn-sm btn-danger pull-right" ng-click="$parent.removeFromUpload(index)">\n ×\n </button>\n <h5 class="list-group-item-heading">{{uploadFile.name}}</h5>\n <p class="list-group-item-text">{{uploadFile.size | humanReadableFileSize}}</p>\n </li>\n </ul>\n <div ng-show="apiMiddleware.apiHandler.inprocess">\n <em>{{"uploading" | translate}}... {{apiMiddleware.apiHandler.progress}}%</em>\n <div class="progress mb0">\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>\n </div>\n </div>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <div>\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="!$parent.uploadFileList.length || apiMiddleware.apiHandler.inprocess" ng-click="uploadFiles()">{{\'upload\' | translate}}</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="install_url">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="installUrl()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'install_url\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'url\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.name" autofocus="autofocus"><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_alldebrid">\n <label class="form-check-label">{{\'install_with_alldebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_realdebrid">\n <label class="form-check-label">{{\'install_with_realdebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.enable_rpi">\n <label class="form-check-label">{{\'install_enable_rpi\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_disk_cache">\n <label class="form-check-label">{{\'install_use_disk_cache\' | translate}}</label>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'install\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="download_url">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="downloadUrl()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'download_url\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <label class="radio">{{\'url\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.content" autofocus="autofocus">\n <div class="detail-sources">\n <div class="like-code mr5">\n <label class="radio">{{\'select_destination_folder\' | translate}}:</label> {{ getSelectedPath() }}\n </div>\n <a href="" class="label label-primary" ng-click="openNavigator(fileNavigator.currentPath)">\n {{\'change\' | translate}}\n </a>\n </div>\n <label class="radio">{{\'file_name\' | translate}}</label>\n <input class="form-control" ng-model="singleSelection().tempModel.desc"><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_alldebrid">\n <label class="form-check-label">{{\'download_with_alldebrid\' | translate}}</label><br/>\n <input type="checkbox" class="form-check-input" ng-model="singleSelection().tempModel.use_realdebrid">\n <label class="form-check-label">{{\'download_with_realdebrid\' | translate}}</label><br/>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="apiMiddleware.apiHandler.inprocess">{{\'download\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="changepermissions">\n <div class="modal-dialog">\n <div class="modal-content">\n <form ng-submit="changePermissions()">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{\'change_permissions\' | translate}}</h4>\n </div>\n <div class="modal-body">\n <table class="table mb0">\n <thead>\n <tr>\n <th>{{\'permissions\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'read\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'write\' | translate}}</th>\n <th class="col-xs-1 text-center">{{\'exec\' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr ng-repeat="(permTypeKey, permTypeValue) in temp.tempModel.perms">\n <td>{{permTypeKey | translate}}</td>\n <td ng-repeat="(permKey, permValue) in permTypeValue" class="col-xs-1 text-center" ng-click="main()">\n <label class="col-xs-12">\n <input type="checkbox" ng-model="temp.tempModel.perms[permTypeKey][permKey]">\n </label>\n </td>\n </tr>\n </tbody>\n </table>\n <div class="checkbox" ng-show="config.enablePermissionsRecursive && selectionHas(\'dir\')">\n <label>\n <input type="checkbox" ng-model="temp.tempModel.recursive"> {{\'recursive\' | translate}}\n </label>\n </div>\n <div class="clearfix mt10">\n <span class="label label-primary pull-left" ng-hide="temp.multiple">\n {{\'original\' | translate}}: \n {{temp.model.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \n ({{temp.model.perms.toOctal()}})\n </span>\n <span class="label label-primary pull-right">\n {{\'changes\' | translate}}: \n {{temp.tempModel.perms.toCode(selectionHas(\'dir\') ? \'d\':\'-\')}} \n ({{temp.tempModel.perms.toOctal()}})\n </span>\n </div>\n <div ng-include data-src="\'error-bar\'" class="clearfix"></div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal">{{"cancel" | translate}}</button>\n <button type="submit" class="btn btn-primary" ng-disabled="">{{\'change\' | translate}}</button>\n </div>\n </form>\n </div>\n </div>\n</div>\n\n<div class="modal animated fadeIn" id="selector" ng-controller="ModalFileManagerCtrl">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal">\n <span aria-hidden="true">×</span>\n <span class="sr-only">{{"close" | translate}}</span>\n </button>\n <h4 class="modal-title">{{"select_destination_folder" | translate}}</h4>\n </div>\n <div class="modal-body">\n <div>\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'"></div>\n <div ng-include="config.tplPath + \'/main-table-modal.html\'"></div>\n <hr />\n <button class="btn btn-sm btn-default" ng-click="selectCurrent()">\n <i class="glyphicon"></i> {{"select_this" | translate}}\n </button>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-default" data-dismiss="modal" ng-disabled="apiMiddleware.apiHandler.inprocess">{{"close" | translate}}</button>\n </div>\n </div>\n </div>\n</div>\n\n<script type="text/ng-template" id="path-selector">\n <div class="panel panel-primary mt10 mb0">\n <div class="panel-body">\n <div class="detail-sources">\n <div class="like-code mr5"><b>{{"selection" | translate}}:</b>\n <span ng-include="\'selected-files-msg\'"></span>\n </div>\n </div>\n <div class="detail-sources">\n <div class="like-code mr5">\n <b>{{"destination" | translate}}:</b> {{ getSelectedPath() }}\n </div>\n <a href="" class="label label-primary" ng-click="openNavigator(fileNavigator.currentPath)">\n {{\'change\' | translate}}\n </a>\n </div>\n </div>\n </div>\n<\/script>\n\n<script type="text/ng-template" id="error-bar">\n <div class="label label-danger error-msg pull-left animated fadeIn" ng-show="apiMiddleware.apiHandler.error">\n <i class="glyphicon glyphicon-remove-circle"></i>\n <span>{{apiMiddleware.apiHandler.error}}</span>\n </div>\n<\/script>\n\n<script type="text/ng-template" id="selected-files-msg">\n <span ng-show="temps.length == 1">\n {{singleSelection().model.name}}\n </span>\n <span ng-show="temps.length > 1">\n {{\'these_elements\' | translate:totalSelecteds()}}\n <a href="" class="label label-primary" ng-click="showDetails = !showDetails">\n {{showDetails ? \'-\' : \'+\'}} {{\'details\' | translate}}\n </a>\n </span>\n <div ng-show="temps.length > 1 && showDetails">\n <ul class="selected-file-details">\n <li ng-repeat="tempItem in temps">\n <b>{{tempItem.model.name}}</b>\n </li>\n </ul>\n </div>\n<\/script>\n'),e.put("src/templates/navbar.html",'<nav class="navbar navbar-inverse">\n <div class="container-fluid">\n <div class="row">\n <div class="col-sm-9 col-md-10 hidden-xs">\n <div ng-show="!config.breadcrumb">\n <a class="navbar-brand hidden-xs ng-binding" href="">angular-{{"filemanager" | translate}}</a>\n </div>\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'" ng-show="config.breadcrumb">\n </div>\n </div>\n <div class="col-sm-3 col-md-2">\n <div class="navbar-collapse">\n <div class="navbar-form navbar-right text-right">\n <div class="pull-left visible-xs" ng-if="fileNavigator.currentPath.length">\n <button class="btn btn-primary btn-flat" ng-click="fileNavigator.upDir()">\n <i class="glyphicon glyphicon-chevron-left"></i>\n </button>\n {{fileNavigator.getCurrentFolderName() | strLimit : 12}}\n </div>\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuSearch" data-toggle="dropdown" aria-expanded="true">\n <i class="glyphicon glyphicon-search mr2"></i>\n </button>\n <div class="dropdown-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\n <input type="text" class="form-control" ng-show="config.searchForm" placeholder="{{\'search\' | translate}}..." ng-model="$parent.query">\n </div>\n </div>\n\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}}">\n <i class="glyphicon glyphicon-th-large"></i>\n </button>\n\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}}">\n <i class="glyphicon glyphicon-th-list"></i>\n </button>\n\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuLang" data-toggle="dropdown" aria-expanded="true" ng-show="config.multiLang">\n <i class="glyphicon glyphicon-globe mr2"></i>\n </button>\n\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'en\')">English</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_tw\')">正體中文</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_cn\')">简体中文</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'es\')">Español</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'nl\')">Nederlands</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pt\')">Portugues</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fr\')">Français</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'de\')">Deutsch</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'he\')">עברי</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'it\')">italiano</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'sk\')">Slovenčina</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ru\')">русский</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'ua\')">український</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'tr\')">Türkçe</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fa\')">فارسی</a></li>\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pl\')">Polski</a></li>\n </ul>\n </div>\n\n <div class="btn-group">\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="more" data-toggle="dropdown" aria-expanded="true">\n <i class="glyphicon glyphicon-option-vertical"></i>\n </button>\n\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="more">\n <li role="presentation" ng-show="config.allowedActions.createFolder" ng-click="modal(\'newfolder\') && prepareNewFolder()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-plus"></i> {{"new_folder" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.upload" ng-click="modal(\'uploadfile\')">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-cloud-upload"></i> {{"upload_files" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.install_url" ng-click="modal(\'install_url\') && prepareInstallUrl()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-wrench"></i> {{"install_url" | translate}}\n </a>\n </li>\n <li role="presentation" ng-show="config.allowedActions.download_url" ng-click="modal(\'download_url\') && prepareDownloadUrl()">\n <a href="" role="menuitem" tabindex="-1">\n <i class="glyphicon glyphicon-wrench"></i> {{"download_url" | translate}}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</nav>\n'),e.put("src/templates/sidebar.html",'<ul class="nav nav-sidebar file-tree-root">\n <li ng-repeat="item in fileNavigator.history" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\n</ul>\n\n<script type="text/ng-template" id="folder-branch-item">\n <a href="" ng-click="fileNavigator.folderClick(item.item)" class="animated fast fadeInDown">\n\n <span class="point">\n <i class="glyphicon glyphicon-chevron-down" ng-show="isInThisPath(item.name)"></i>\n <i class="glyphicon glyphicon-chevron-right" ng-show="!isInThisPath(item.name)"></i>\n </span>\n\n <i class="glyphicon glyphicon-folder-open mr2" ng-show="isInThisPath(item.name)"></i>\n <i class="glyphicon glyphicon-folder-close mr2" ng-show="!isInThisPath(item.name)"></i>\n {{ (item.name.split(\'/\').pop() || fileNavigator.getBasePath().join(\'/\') || \'/\') | strLimit : 30 }}\n </a>\n <ul class="nav nav-sidebar">\n <li ng-repeat="item in item.nodes" ng-include="\'folder-branch-item\'" ng-class="{\'active\': item.name == fileNavigator.currentPath.join(\'/\')}"></li>\n </ul>\n<\/script>'),e.put("src/templates/spinner.html",'<div class="spinner-wrapper col-xs-12">\n <svg class="spinner-container" style="width:65px;height:65px" viewBox="0 0 44 44">\n <circle class="path" cx="22" cy="22" r="20" fill="none" stroke-width="4"></circle>\n </svg>\n</div>')}]); |