mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 15:56:34 +01:00
4 lines
118 KiB
JavaScript
4 lines
118 KiB
JavaScript
|
|
!function(e,r,n){"use strict";r.module("FileManagerApp",["pascalprecht.translate","ngFileUpload"]),n(e.document).on("shown.bs.modal",".modal",function(){e.setTimeout(function(){n("[autofocus]",this).focus()}.bind(this),100)}),n(e.document).on("click",function(){n("#context-menu").hide()}),n(e.document).on("contextmenu",'.main-navigation .table-files tr.item-list:has("td"), .item-list',function(r){var i=n("#context-menu");r.pageX>=e.innerWidth-i.width()&&(r.pageX-=i.width()),r.pageY>=e.innerHeight-i.height()&&(r.pageY-=i.height()),i.hide().css({left:r.pageX,top:r.pageY}).appendTo("body").show(),r.preventDefault()}),Array.prototype.find||(Array.prototype.find=function(e){if(null==this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r,n=Object(this),i=n.length>>>0,a=arguments[1],t=0;i>t;t++)if(r=n[t],e.call(a,r,t,n))return r})}(window,angular,jQuery),function(e,r){"use strict";e.module("FileManagerApp").controller("FileManagerCtrl",["$scope","$rootScope","$window","$translate","fileManagerConfig","item","fileNavigator","apiMiddleware",function(e,n,i,a,t,o,s,l){var d=i.localStorage;e.config=t,e.reverse=!1,e.predicate=["model.type","model.name"],e.order=function(r){e.reverse=e.predicate[1]===r?!e.reverse:!1,e.predicate[1]=r},e.query="",e.fileNavigator=new s,e.apiMiddleware=new l,e.uploadFileList=[],e.viewTemplate=d.getItem("viewTemplate")||"main-icons.html",e.fileList=[],e.temps=[],e.$watch("temps",function(){e.singleSelection()?e.temp=e.singleSelection():(e.temp=new o({rights:644}),e.temp.multiple=!0),e.temp.revert()}),e.fileNavigator.onRefresh=function(){e.temps=[],e.query="",n.selectedModalPath=e.fileNavigator.currentPath},e.setTemplate=function(r){d.setItem("viewTemplate",r),e.viewTemplate=r},e.changeLanguage=function(e){return e?(d.setItem("language",e),a.use(e)):void a.use(d.getItem("language")||t.defaultLang)},e.isSelected=function(r){return-1!==e.temps.indexOf(r)},e.selectOrUnselect=function(r,n){var i=e.temps.indexOf(r),a=n&&3==n.which;if(n&&n.target.hasAttribute("prevent"))return void(e.temps=[]);if(!(!r||a&&e.isSelected(r))){if(n&&n.shiftKey&&!a){var t=e.fileList,o=t.indexOf(r),s=e.temps[0],l=t.indexOf(s),d=void 0;if(s&&t.indexOf(s)<o){for(e.temps=[];o>=l;)d=t[l],!e.isSelected(d)&&e.temps.push(d),l++;return}if(s&&t.indexOf(s)>o){for(e.temps=[];l>=o;)d=t[l],!e.isSelected(d)&&e.temps.push(d),l--;return}}return n&&!a&&(n.ctrlKey||n.metaKey)?void(e.isSelected(r)?e.temps.splice(i,1):e.temps.push(r)):void(e.temps=[r])}},e.singleSelection=function(){return 1===e.temps.length&&e.temps[0]},e.totalSelecteds=function(){return{total:e.temps.length}},e.selectionHas=function(r){return e.temps.find(function(e){return e&&e.model.type===r})},e.prepareNewFolder=function(){var r=new o(null,e.fileNavigator.currentPath);return e.temps=[r],r},e.smartClick=function(r){var n=e.config.allowedActions.pickFiles;if(r.isFolder())return e.fileNavigator.folderClick(r);if("function"==typeof e.config.pickCallback&&n){var i=e.config.pickCallback(r.model);if(i===!0)return}return r.isImage()?e.config.previewImagesInModal?e.openImagePreview(r):e.apiMiddleware.download(r,!0):r.isEditable()?e.openEditItem(r):void 0},e.openImagePreview=function(){var r=e.singleSelection();e.apiMiddleware.apiHandler.inprocess=!0,e.modal("imagepreview",null,!0).find("#imagepreview-target").attr("src",e.apiMiddleware.getUrl(r)).unbind("load error").on("load error",function(){e.apiMiddleware.apiHandler.inprocess=!1,e.$apply()})},e.openEditItem=function(){var r=e.singleSelection();e.apiMiddleware.getContent(r).then(function(e){r.tempModel.content=r.model.content=e.result}),e.modal("edit")},e.modal=function(n,i,a){var t=r("#"+n);return t.modal(i?"hide":"show"),e.apiMiddleware.apiHandler.error="",e.apiMiddleware.apiHandler.asyncSuccess=!1,a?t:!0},e.modalWithPathSelector=function(r){return n.selectedModalPath=e.fileNavigator.currentPath,e.modal(r)},e.isInThisPath=function(r){var n=e.fileNavigator.currentPath.join("/")+"/";return-1!==n.indexOf(r+"/")},e.edit=function(){e.a
|
||
|
|
compress:"Komprimieren",error_invalid_filename:"Ungültiger Dateiname oder existiert bereits",error_modifying:"Beim Bearbeiten der Datei ist ein Fehler aufgetreten",error_deleting:"Beim Löschen der Datei oder des Ordners ist ein Fehler aufgetreten",error_renaming:"Beim Umbennenen der Datei ist ein Fehler aufgetreten",error_copying:"Beim Kopieren der Datei ist ein Fehler aufgetreten",error_compressing:"Beim Komprimieren der Datei oder des Ordners ist ein Fehler aufgetreten",error_extracting:"Beim Entpacken der Datei ist ein Fehler aufgetreten",error_creating_folder:"Beim Erstellen des Ordners ist ein Fehler aufgetreten",error_getting_content:"Beim Laden des Dateiinhalts ist ein Fehler aufgetreten",error_changing_perms:"Beim Ändern der Dateiberechtigungen ist ein Fehler aufgetreten",error_uploading_files:"Beim Hochladen der Dateien ist ein Fehler aufgetreten",sure_to_start_compression_with:"Möchten Sie die Datei wirklich komprimieren?",owner:"Besitzer",group:"Gruppe",others:"Andere",read:"Lesen",write:"Schreiben",exec:"Ausführen",original:"Original",changes:"Änderungen",recursive:"Rekursiv",preview:"Dateivorschau",open:"Öffnen",these_elements:"diese {{total}} elemente",new_folder:"Neuer ordner",download_as_zip:"Download als ZIP"}),e.translations("sk",{filemanager:"Správca súborov",language:"Jazyk",english:"Angličtina",spanish:"Španielčina",portuguese:"Portugalčina",french:"Francúzština",german:"Nemčina",hebrew:"Hebrejčina",italian:"Italština",slovak:"Slovenčina",chinese_tw:"Tradičná Čínska",chinese_cn:"Zjednodušená Čínština",russian:"Ruský",ukrainian:"Ukrajinský",turkish:"Turecký",persian:"Perzský",polish:"Poľský",confirm:"Potvrdiť",cancel:"Zrušiť",close:"Zavrieť",upload_files:"Nahrávať súbory",files_will_uploaded_to:"Súbory budú nahrané do",select_files:"Vybrať súbory",uploading:"Nahrávanie",permissions:"Oprávnenia",select_destination_folder:"Vyberte cieľový príečinok",source:"Zdroj",destination:"Cieľ",copy_file:"Kopírovať súbor",sure_to_delete:"Ste si istý, že chcete vymazať",change_name_move:"Premenovať / Premiestniť",enter_new_name_for:"Zadajte nové meno pre",extract_item:"Rozbaliť položku",extraction_started:"Rozbaľovanie začalo v procese na pozadí",compression_started:"Kompresia začala v procese na pzoadí",enter_folder_name_for_extraction:"Zadajte názov priečinka na rozbalenie",enter_file_name_for_compression:"Zadajte názov súboru pre kompresiu",toggle_fullscreen:"Prepnúť režim na celú obrazovku",edit_file:"Upraviť súbor",file_content:"Obsah súboru",loading:"Načítavanie",search:"Hľadať",create_folder:"Vytvoriť priečinok",create:"Vytvoriť",folder_name:"Názov priećinka",upload:"Nahrať",change_permissions:"Zmeniť oprávnenia",change:"Zmeniť",details:"Podrobnosti",icons:"Ikony",list:"Zoznam",name:"Meno",size:"Veľkosť",actions:"Akcie",date:"Dátum",selection:"Výber",no_files_in_folder:"V tom to priečinku nie sú žiadne súbory",no_folders_in_folder:"Tento priečinok neobsahuje žiadne ďalšie priećinky",select_this:"Vybrať tento",go_back:"Ísť späť",wait:"Počkajte",move:"Presunúť",download:"Stiahnuť",view_item:"Zobraziť položku",remove:"Vymazať",edit:"Upraviť",copy:"Kopírovať",rename:"Premenovať",extract:"Rozbaliť",compress:"Komprimovať",error_invalid_filename:"Neplatné alebo duplicitné meno súboru, vyberte iné meno",error_modifying:"Vyskytla sa chyba pri upravovaní súboru",error_deleting:"Vyskytla sa chyba pri mazaní súboru alebo priečinku",error_renaming:"Vyskytla sa chyba pri premenovaní súboru",error_copying:"Vyskytla sa chyba pri kopírovaní súboru",error_compressing:"Vyskytla sa chyba pri komprimovaní súboru alebo priečinka",error_extracting:"Vyskytla sa chyba pri rozbaľovaní súboru",error_creating_folder:"Vyskytla sa chyba pri vytváraní priečinku",error_getting_content:"Vyskytla sa chyba pri získavaní obsahu súboru",error_changing_perms:"Vyskytla sa chyba pri zmene oprávnení súboru",error_uploading_files:"Vyskytla sa chyba pri nahrávaní súborov",sure_to_start_compression
|
||
|
|
},i.prototype.upload=function(n,i){if(!e.FormData)throw new Error("Unsupported browser version");var a=this.getPath(i);return this.apiHandler.upload(r.uploadUrl,a,n)},i.prototype.getContent=function(e){var n=this.getFilePath(e);return this.apiHandler.getContent(r.getContentUrl,n)},i.prototype.edit=function(e){var n=this.getFilePath(e);return this.apiHandler.edit(r.editUrl,n,e.tempModel.content)},i.prototype.rename=function(e){var n=this.getFilePath(e),i=e.tempModel.fullPath();return this.apiHandler.rename(r.renameUrl,n,i)},i.prototype.getUrl=function(e){var n=this.getFilePath(e);return this.apiHandler.getUrl(r.downloadFileUrl,n)},i.prototype.download=function(e,n){var i=this.getFilePath(e),a=e.model.name;return e.isFolder()?void 0:this.apiHandler.download(r.downloadFileUrl,i,a,r.downloadFilesByAjax,n)},i.prototype.downloadMultiple=function(e,n){var i=this.getFileList(e),a=(new Date).getTime().toString().substr(8,13),t=a+"-"+r.multipleDownloadFileName;return this.apiHandler.downloadMultiple(r.downloadMultipleUrl,i,t,r.downloadFilesByAjax,n)},i.prototype.compress=function(e,n,i){var a=this.getFileList(e);return this.apiHandler.compress(r.compressUrl,a,n,this.getPath(i))},i.prototype.extract=function(e,n,i){var a=this.getFilePath(e);return this.apiHandler.extract(r.extractUrl,a,n,this.getPath(i))},i.prototype.changePermissions=function(e,n){var i=this.getFileList(e),a=n.tempModel.perms.toCode(),t=n.tempModel.perms.toOctal(),o=!!n.tempModel.recursive;return this.apiHandler.changePermissions(r.permissionsUrl,i,a,t,o)},i.prototype.createFolder=function(e){var n=e.tempModel.fullPath();return this.apiHandler.createFolder(r.createFolderUrl,n)},i}])}(angular),function(e){"use strict";e.module("FileManagerApp").service("fileNavigator",["apiMiddleware","fileManagerConfig","item",function(e,r,n){var i=function(){this.apiMiddleware=new e,this.requesting=!1,this.fileList=[],this.currentPath=this.getBasePath(),this.history=[],this.error="",this.onRefresh=function(){}};return i.prototype.getBasePath=function(){var e=(r.basePath||"").replace(/^\//,"");return e.trim()?e.split("/"):[]},i.prototype.deferredHandler=function(e,r,n,i){return e&&"object"==typeof e||(this.error="Error %s - Bridge response error, please check the API docs or this ajax response.".replace("%s",n)),404==n&&(this.error="Error 404 - Backend bridge is not working, please check the ajax response."),200==n&&(this.error=null),!this.error&&e.result&&e.result.error&&(this.error=e.result.error),!this.error&&e.error&&(this.error=e.error.message),!this.error&&i&&(this.error=i),this.error?r.reject(e):r.resolve(e)},i.prototype.list=function(){return this.apiMiddleware.list(this.currentPath,this.deferredHandler.bind(this))},i.prototype.refresh=function(){var e=this;e.currentPath.length||(e.currentPath=this.getBasePath());var r=e.currentPath.join("/");return e.requesting=!0,e.fileList=[],e.list().then(function(i){e.fileList=(i.result||[]).map(function(r){return new n(r,e.currentPath)}),e.buildTree(r),e.onRefresh()})["finally"](function(){e.requesting=!1})},i.prototype.buildTree=function(e){function r(e,n,i){var a=i?i+"/"+n.model.name:n.model.name;if(e.name&&e.name.trim()&&0!==i.trim().indexOf(e.name)&&(e.nodes=[]),e.name!==i)e.nodes.forEach(function(e){r(e,n,i)});else{for(var t in e.nodes)if(e.nodes[t].name===a)return;e.nodes.push({item:n,name:a,nodes:[]})}e.nodes=e.nodes.sort(function(e,r){return e.name.toLowerCase()<r.name.toLowerCase()?-1:e.name.toLowerCase()===r.name.toLowerCase()?0:1})}function i(e,r){r.push(e);for(var n in e.nodes)i(e.nodes[n],r)}function a(e,r){return e.filter(function(e){return e.name===r})[0]}var t=[],o={};!this.history.length&&this.history.push({name:this.getBasePath()[0]||"",nodes:[]}),i(this.history[0],t),o=a(t,e),o&&(o.nodes=[]);for(var s in this.fileList){var l=this.fileList[s];l instanceof n&&l.isFolder()&&r(this.history[0],l,e)}},i.prototype.folderClick=function(e){this.currentPath=[],e&&e.isFolder()&&(this.currentPath=e.model.fullPath().split("/").splice(1)),this.refresh()},i.prototype.upDir=function(){this.currentPath[0]&&(this.currentPath=this.c
|
||
|
|
e.put("src/templates/navbar.html",'<nav class="navbar navbar-inverse">\r\n <div class="container-fluid">\r\n <div class="row">\r\n <div class="col-sm-9 col-md-10 hidden-xs">\r\n <div ng-show="!config.breadcrumb">\r\n <a class="navbar-brand hidden-xs ng-binding" href="">angular-{{"filemanager" | translate}}</a>\r\n </div>\r\n <div ng-include="config.tplPath + \'/current-folder-breadcrumb.html\'" ng-show="config.breadcrumb">\r\n </div>\r\n </div>\r\n <div class="col-sm-3 col-md-2">\r\n <div class="navbar-collapse">\r\n <div class="navbar-form navbar-right text-right">\r\n <div class="pull-left visible-xs" ng-if="fileNavigator.currentPath.length">\r\n <button class="btn btn-primary btn-flat" ng-click="fileNavigator.upDir()">\r\n <i class="glyphicon glyphicon-chevron-left"></i>\r\n </button>\r\n {{fileNavigator.getCurrentFolderName() | strLimit : 12}}\r\n </div>\r\n <div class="btn-group">\r\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuSearch" data-toggle="dropdown" aria-expanded="true">\r\n <i class="glyphicon glyphicon-search mr2"></i>\r\n </button>\r\n <div class="dropdown-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\r\n <input type="text" class="form-control" ng-show="config.searchForm" placeholder="{{\'search\' | translate}}..." ng-model="$parent.query">\r\n </div>\r\n </div>\r\n\r\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-icons.html\')" ng-show="$parent.viewTemplate !==\'main-icons.html\'" title="{{\'icons\' | translate}}">\r\n <i class="glyphicon glyphicon-th-large"></i>\r\n </button>\r\n\r\n <button class="btn btn-flat btn-sm" ng-click="$parent.setTemplate(\'main-table.html\')" ng-show="$parent.viewTemplate !==\'main-table.html\'" title="{{\'list\' | translate}}">\r\n <i class="glyphicon glyphicon-th-list"></i>\r\n </button>\r\n\r\n <div class="btn-group">\r\n <button class="btn btn-flat btn-sm dropdown-toggle" type="button" id="dropDownMenuLang" data-toggle="dropdown" aria-expanded="true">\r\n <i class="glyphicon glyphicon-globe mr2"></i>\r\n </button>\r\n\r\n <ul class="dropdown-menu scrollable-menu animated fast fadeIn pull-right" role="menu" aria-labelledby="dropDownMenuLang">\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'en\')">English</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_tw\')">正體中文</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'zh_cn\')">简体中文</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'es\')">Español</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'pt\')">Portugues</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLanguage(\'fr\')">Français</a></li>\r\n <li role="presentation"><a role="menuitem" tabindex="-1" href="" ng-click="changeLangua
|