mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-14 09:16:11 +01:00
135 lines
5.2 KiB
JavaScript
135 lines
5.2 KiB
JavaScript
|
|
(function(angular) {
|
||
|
|
'use strict';
|
||
|
|
angular.module('FileManagerApp').service('apiMiddleware', ['$window', 'fileManagerConfig', 'apiHandler',
|
||
|
|
function ($window, fileManagerConfig, ApiHandler) {
|
||
|
|
|
||
|
|
var ApiMiddleware = function() {
|
||
|
|
this.apiHandler = new ApiHandler();
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.getPath = function(arrayPath) {
|
||
|
|
return '/' + arrayPath.join('/');
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.getFileList = function(files) {
|
||
|
|
return (files || []).map(function(file) {
|
||
|
|
return file && file.model.fullPath();
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.getFilePath = function(item) {
|
||
|
|
return item && item.model.fullPath();
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.list = function(path, customDeferredHandler) {
|
||
|
|
return this.apiHandler.list(fileManagerConfig.listUrl, this.getPath(path), customDeferredHandler);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.copy = function(files, path) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
var singleFilename = items.length === 1 ? files[0].tempModel.name : undefined;
|
||
|
|
return this.apiHandler.copy(fileManagerConfig.copyUrl, items, this.getPath(path), singleFilename);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.move = function(files, path) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
return this.apiHandler.move(fileManagerConfig.moveUrl, items, this.getPath(path));
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.remove = function(files) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
return this.apiHandler.remove(fileManagerConfig.removeUrl, items);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.upload = function(files, path) {
|
||
|
|
if (! $window.FormData) {
|
||
|
|
throw new Error('Unsupported browser version');
|
||
|
|
}
|
||
|
|
|
||
|
|
var destination = this.getPath(path);
|
||
|
|
|
||
|
|
return this.apiHandler.upload(fileManagerConfig.uploadUrl, destination, files);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.getContent = function(item) {
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
return this.apiHandler.getContent(fileManagerConfig.getContentUrl, itemPath);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.edit = function(item) {
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
return this.apiHandler.edit(fileManagerConfig.editUrl, itemPath, item.tempModel.content);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.rename = function(item) {
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
var newPath = item.tempModel.fullPath();
|
||
|
|
|
||
|
|
return this.apiHandler.rename(fileManagerConfig.renameUrl, itemPath, newPath);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.getUrl = function(item) {
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
return this.apiHandler.getUrl(fileManagerConfig.downloadFileUrl, itemPath);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.download = function(item, forceNewWindow) {
|
||
|
|
//TODO: add spinner to indicate file is downloading
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
var toFilename = item.model.name;
|
||
|
|
|
||
|
|
if (item.isFolder()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
return this.apiHandler.download(
|
||
|
|
fileManagerConfig.downloadFileUrl,
|
||
|
|
itemPath,
|
||
|
|
toFilename,
|
||
|
|
fileManagerConfig.downloadFilesByAjax,
|
||
|
|
forceNewWindow
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.downloadMultiple = function(files, forceNewWindow) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
var timestamp = new Date().getTime().toString().substr(8, 13);
|
||
|
|
var toFilename = timestamp + '-' + fileManagerConfig.multipleDownloadFileName;
|
||
|
|
|
||
|
|
return this.apiHandler.downloadMultiple(
|
||
|
|
fileManagerConfig.downloadMultipleUrl,
|
||
|
|
items,
|
||
|
|
toFilename,
|
||
|
|
fileManagerConfig.downloadFilesByAjax,
|
||
|
|
forceNewWindow
|
||
|
|
);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.compress = function(files, compressedFilename, path) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
return this.apiHandler.compress(fileManagerConfig.compressUrl, items, compressedFilename, this.getPath(path));
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.extract = function(item, folderName, path) {
|
||
|
|
var itemPath = this.getFilePath(item);
|
||
|
|
return this.apiHandler.extract(fileManagerConfig.extractUrl, itemPath, folderName, this.getPath(path));
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.changePermissions = function(files, dataItem) {
|
||
|
|
var items = this.getFileList(files);
|
||
|
|
var code = dataItem.tempModel.perms.toCode();
|
||
|
|
var octal = dataItem.tempModel.perms.toOctal();
|
||
|
|
var recursive = !!dataItem.tempModel.recursive;
|
||
|
|
|
||
|
|
return this.apiHandler.changePermissions(fileManagerConfig.permissionsUrl, items, code, octal, recursive);
|
||
|
|
};
|
||
|
|
|
||
|
|
ApiMiddleware.prototype.createFolder = function(item) {
|
||
|
|
var path = item.tempModel.fullPath();
|
||
|
|
return this.apiHandler.createFolder(fileManagerConfig.createFolderUrl, path);
|
||
|
|
};
|
||
|
|
|
||
|
|
return ApiMiddleware;
|
||
|
|
|
||
|
|
}]);
|
||
|
|
})(angular);
|