File manager - Edit - /usr/local/cpanel/whostmgr/docroot/templates/file_and_directory_restore/index.cmb.js
Back
/* # file_and_directory_restore/services/backup_API.js Copyright 2017 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define( 'app/services/backup_API',[ "angular", "cjt/io/uapi-request", "cjt/io/api", "cjt/io/whm-v1-request", "cjt/io/whm-v1", "cjt/services/APIService" ], function(angular, APIREQUEST, API, WHMREQUEST, APIDRIVER) { var app; try { app = angular.module("whm.fileAndDirectoryRestore"); // For runtime } catch (e) { app = angular.module("whm.fileAndDirectoryRestore", []); // Fall-back for unit testing } app.factory("backupAPIService", [ "APIService", function( APIService ) { // Set up the service's constructor and parent var BackupAPIService = function() {}; BackupAPIService.prototype = new APIService(); // Extend the prototype with any class-specific functionality angular.extend(BackupAPIService.prototype, { /** * Get a list of all directories and files of a given path * @public * @method listDirectory * @param {string} path The full path of the directory * @param {string} accountName Name of user to get backups for * @return {Promise} Promise that will fulfill the request. */ listDirectory: function(path, accountName) { var apiCall = new WHMREQUEST.Class(); apiCall.initialize("", "cpanel"); apiCall.addArgument("cpanel_jsonapi_user", accountName); apiCall.addArgument("cpanel_jsonapi_module", "Restore"); apiCall.addArgument("cpanel_jsonapi_func", "directory_listing"); apiCall.addArgument("cpanel_jsonapi_apiversion", "3"); apiCall.addArgument("path", path); var deferred = this.deferred(apiCall, { transformAPISuccess: function(response) { return response.data; }, transformAPIFailure: function(response) { return response.error; } }); return deferred.promise; }, /** * Get all users in WHM account * @public * @method listUsers * @return {Promise} Promise that will fulfill the request. **/ listUsers: function() { var apiCall = new WHMREQUEST.Class(); apiCall.initialize("Accounts", "listaccts"); var deferred = this.deferred(apiCall, { transformAPISuccess: function(response) { return response.data; }, transformAPIFailure: function(response) { return response.error; } }); return deferred.promise; }, /** * Get all backups of a particular file * @public * @method listFileBackups * @param {string} fullPath The full path of the file * @param {string} accountName The cpanl user name * @return {Promise} Promise that will fulfill the request. */ listFileBackups: function(fullPath, accountName) { var apiCall = new WHMREQUEST.Class(); apiCall.initialize("", "cpanel"); apiCall.addArgument("cpanel_jsonapi_user", accountName); apiCall.addArgument("cpanel_jsonapi_module", "Restore"); apiCall.addArgument("cpanel_jsonapi_func", "query_file_info"); apiCall.addArgument("cpanel_jsonapi_apiversion", "3"); apiCall.addArgument("fullpath", fullPath); var deferred = this.deferred(apiCall, { transformAPISuccess: function(response) { return response.data; }, transformAPIFailure: function(response) { return response.error; } }); return deferred.promise; }, /** * Restore a single file * @public * @method restore * @param {string} fullPath The full path of the file * @param {string} backupID The full path of the backup * @return {Promise} Promise that will fulfill the request. */ restore: function(fullPath, backupID, accountName) { var apiCall = new WHMREQUEST.Class(); apiCall.initialize("", "cpanel"); apiCall.addArgument("cpanel_jsonapi_user", accountName); apiCall.addArgument("cpanel_jsonapi_module", "Restore"); apiCall.addArgument("cpanel_jsonapi_func", "restore_file"); apiCall.addArgument("cpanel_jsonapi_apiversion", "3"); apiCall.addArgument("backupID", backupID); apiCall.addArgument("fullpath", fullPath); apiCall.addArgument("overwrite", 1); var deferred = this.deferred(apiCall, { transformAPISuccess: function(response) { return response.data; }, transformAPIFailure: function(response) { return response.error; } }); return deferred.promise; }, }); return new BackupAPIService(); } ]); } ); /* # file_and_directory_restore/views/backup_restore.js Copyright 2017 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define( 'app/views/backup_restore',[ "angular", "cjt/util/locale", "app/services/backup_API", "uiBootstrap" ], function(angular, LOCALE) { // Retrieve the current application var app = angular.module("whm.fileAndDirectoryRestore"); // Setup the controller var controller = app.controller( "listController", [ "$scope", "growl", "backupAPIService", "$uibModal", function( $scope, growl, backupAPIService, $uibModal ) { /** * Called when path changes * * @scope * @method buildBreadcrumb */ $scope.buildBreadcrumb = function() { $scope.directoryBreadcrumb = []; // If at root directory, no path is needed and the full string of currentPath is the entirety of directoryBreadcrumb if ($scope.currentPath === "/") { $scope.directoryBreadcrumb = [{ folder: $scope.currentPath, path: $scope.currentPath }]; } else { // If in a sub-directory, build each directoryBreadcrumb element splitted by "/" and build each path var directories = $scope.currentPath.split("/"); for (var i = 0, length = directories.length; i < length; i++) { $scope.directoryBreadcrumb.push({ folder: directories[i], path: $scope.currentPath.split(directories[i])[0] + directories[i] }); } } }; /** * Change to a different directory and get the list of files in that directory * * @scope * @method changeDirectory * @param {String} path file system path user is directing to */ $scope.changeDirectory = function(path) { $scope.loadingData = true; $scope.fileBackupList = []; // Call API to fetch the new directory info if (path === "..") { path = $scope.directoryBreadcrumb[$scope.directoryBreadcrumb.length - 3].path; } // add necessary trailing slash to path string for proper API format if (path.charAt(path.length - 1) !== "/") { path = path + "/"; } backupAPIService.listDirectory(path, $scope.accountName) .then(function(directoryPath) { $scope.currentPath = path; $scope.buildBreadcrumb(); $scope.addPaths(directoryPath); $scope.loadingData = false; }, function(error) { growl.error(error); }); }; /** * Select an item, get the backup list of that item or change to that directory * * @scope * @method selectItem * @param {Object} item file or directory user selects */ $scope.selectItem = function(item) { if (item.type.indexOf("dir") !== -1) { $scope.changeDirectory(item.fullPath); } else { $scope.selectedItemName = item.name; $scope.selectedItemExists = item.exists; $scope.loadingData = true; backupAPIService.listFileBackups(item.fullPath, $scope.accountName) .then(function(itemData) { $scope.fileBackupList = itemData; $scope.loadingData = false; }, function(error) { growl.error(error); }); } }; /** * Adds the full path (path names for children of current directory) * to the data and the path (path to current directory location)to the parent directory * as properties on the data object * * @scope * @method addPaths * @param {Array} directories Array of data objects that need path properties added. **/ $scope.addPaths = function(directories) { $scope.currentDirectoryContent = []; for (var i = 0, length = directories.length; i < length; i++) { directories[i]["path"] = $scope.currentPath; directories[i]["fullPath"] = $scope.currentPath + directories[i].name; $scope.currentDirectoryContent.push(directories[i]); } }; /** * Process requested backup version to restore a single file * * @scope * @method restore * @param {Object} backup selected to be processed * @param {string} fullpath The full path to the target file location * @param {string} backupID The backup's path on the disk **/ $scope.restore = function(backup) { $scope.selectedFilePath = backup.fullpath; $scope.selectedBackupID = backup.backupID; var $uibModalInstance = $uibModal.open({ templateUrl: "restoreModalContent.tmpl", controller: "restoreModalController", resolve: { fileExists: $scope.selectedItemExists } }); $uibModalInstance.result.then(function(proceedRestoration) { if (proceedRestoration) { // Run restoration backupAPIService.restore($scope.selectedFilePath, $scope.selectedBackupID, $scope.accountName) .then(function(response) { if (response.success) { growl.success(LOCALE.maketext("File restored successfully.")); } }, function(error) { growl.error(LOCALE.maketext("File restoration failure: [_1]", error)); }); } }); }; /** * Get list of all user accounts listed in WHM * * @scope * @method getAccounts **/ $scope.getAccounts = function() { backupAPIService.listUsers() .then(function(accounts) { $scope.inCpanel = false; $scope.initialDataLoaded = true; $scope.accounts = accounts; $scope.currentDirectoryContent = []; $scope.fileBackupList = []; }, function(error) { growl.error(error); }); }; /** * Get file and directory listing of specific account * * @scope * @method getAccount * @param {string} accountName name of account user is retrieving backups for **/ $scope.getAccount = function(accountName) { $scope.loadingData = true; backupAPIService.listDirectory("/", accountName) .then(function(directoryPath) { $scope.inCpanel = true; $scope.accountName = accountName; $scope.currentPath = "/"; $scope.loadingData = false; $scope.buildBreadcrumb(); $scope.addPaths(directoryPath); }, function(error) { growl.error(error); }); }, /** * Initializes data * @scope * @method init **/ $scope.init = function() { $scope.initialDataLoaded = false; $scope.getAccounts(); }; $scope.init(); } ] ); return controller; } ); /* # file_and_directory_restore/views/restore_cnfirmation.js Copyright 2017 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define('app/views/restore_confirmation',[ "angular", "cjt/util/locale", "uiBootstrap" ], function(angular, LOCALE) { var app = angular.module("whm.fileAndDirectoryRestore"); app.controller("restoreModalController", [ "$scope", "$uibModalInstance", "fileExists", function( $scope, $uibModalInstance, fileExists ) { $scope.fileExists = fileExists; $scope.closeModal = function() { $uibModalInstance.close(); }; $scope.runIt = function() { $uibModalInstance.close(true); }; } ]); }); /* # file_and_backup_restoration/filters/file_size_filter.js Copyright 2017 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global define: false */ define( 'app/filters/file_size_filter',[ "angular", "cjt/util/locale" ], function(angular, LOCALE) { // Retrieve the current application var app; try { app = angular.module("whm.fileAndDirectoryRestore"); // For runtime } catch (e) { app = angular.module("whm.fileAndDirectoryRestore", []); // Fall-back for unit testing } app.filter("convertedSize", function() { return function(size) { return LOCALE.format_bytes(size); }; }); }); /* # whostmgr/docroot/templates/file_and_directory_restore/index.js # Copyright 2017 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* global require: false, define: false */ define( 'app/index',[ "angular", "cjt/core", "cjt/modules", "ngRoute", "uiBootstrap" ], function(angular, CJT) { return function() { angular.module("whm.fileAndDirectoryRestore", [ "cjt2.config.whm.configProvider", // This needs to load first "ngRoute", "ui.bootstrap", "angular-growl", "cjt2.whm" ]); var app = require( [ "cjt/bootstrap", "cjt/views/applicationController", "app/views/backup_restore", "app/views/restore_confirmation", "app/filters/file_size_filter" ], function(BOOTSTRAP) { var app = angular.module("whm.fileAndDirectoryRestore"); app.config([ "$routeProvider", function($routeProvider) { $routeProvider.when("/backup_restore", { controller: "listController", templateUrl: "file_and_directory_restore/views/backup_restore.ptt" }); $routeProvider.otherwise({ "redirectTo": "/backup_restore" }); } ]); BOOTSTRAP(document, "whm.fileAndDirectoryRestore"); }); return app; }; } );
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.05 |
proxy
|
phpinfo
|
Settings