Merge branch 'feature/files' of https://github.com/ONLYOFFICE/CommunityServer-AspNetCore into feature/files

This commit is contained in:
Nikita Gopienko 2020-03-11 16:14:18 +03:00
commit b08e9f83c4
7 changed files with 193 additions and 105 deletions

View File

@ -94,28 +94,28 @@ class SectionBodyContent extends React.PureComponent {
});
}
onClickDelete = (item) => {
item.fileExst
? this.onDeleteFile(item.id, item.folderId)
: this.onDeleteFolder(item.id, item.parentId);
}
onDeleteFile = (fileId, currentFolderId) => {
const { deleteFile } = this.props;
deleteFile(fileId)
.catch(err => toastr.error(err))
.then(() => fetchFolder(currentFolderId, store.dispatch));
.then(() => fetchFolder(currentFolderId, store.dispatch))
.then(() => toastr.success(`File moved to recycle bin`));
}
onDeleteFolder = (folderId, currentFolderId) => {
toastr.warning('development');
/* const { deleteFolder } = this.props;
const { deleteFolder } = this.props;
deleteFolder(folderId)
.catch(err => toastr.error(err))
.then(() => fetchFolder(currentFolderId, store.dispatch)); */
}
onClickDelete = (item) => {
item.fileExst
? this.onDeleteFile(item.id, item.folderId)
: this.onDeleteFolder(item.id, item.parentId);
.then(() => fetchFolder(currentFolderId, store.dispatch))
.then(() => toastr.success(`Folder moved to recycle bin`));
}
onClickLinkForPortal = (folderId) => {

View File

@ -313,9 +313,15 @@ export function deleteFile(fileId, deleteAfter, immediately) {
}
}
export function deleteFolder(fileId, deleteAfter, immediately) {
return dispatch => {
return files.deleteFolder(fileId, deleteAfter, immediately)
export function deleteFolder(folderId, deleteAfter, immediately) {
return (dispatch, getState) => {
const { files } = getState();
const { folders } = files;
return api.files.deleteFolder(folderId, deleteAfter, immediately)
.then(res => {
return dispatch(setFolder(folders.filter(f => f.id !== folderId)));
})
}
}

View File

@ -730,9 +730,9 @@ namespace ASC.Api.Documents
/// <param name="title">Title of new folder</param>
/// <returns>New folder contents</returns>
[Create("folder/{folderId}")]
public FolderWrapper CreateFolder(string folderId, string title)
public FolderWrapper CreateFolder(string folderId, FolderModel folderModel)
{
var folder = FileStorageService.CreateNewFolder(folderId, title);
var folder = FileStorageService.CreateNewFolder(folderId, folderModel.Title);
return FolderWrapperHelper.Get(folder);
}
@ -777,9 +777,9 @@ namespace ASC.Api.Documents
/// <param name="title">New title</param>
/// <returns>Folder contents</returns>
[Update("folder/{folderId}")]
public FolderWrapper RenameFolder(string folderId, string title)
public FolderWrapper RenameFolder(string folderId, FolderModel folderModel)
{
var folder = FileStorageService.FolderRename(folderId, title);
var folder = FileStorageService.FolderRename(folderId, folderModel.Title);
return FolderWrapperHelper.Get(folder);
}
@ -832,13 +832,13 @@ namespace ASC.Api.Documents
/// <param name="lastVersion">File last version number</param>
/// <returns>File info</returns>
[Update("file/{fileId}")]
public FileWrapper UpdateFile(string fileId, string title, int lastVersion)
public FileWrapper UpdateFile(string fileId, [FromBody]FileModelFull model)
{
if (!string.IsNullOrEmpty(title))
FileStorageService.FileRename(fileId.ToString(CultureInfo.InvariantCulture), title);
if (!string.IsNullOrEmpty(model.Title))
FileStorageService.FileRename(fileId.ToString(CultureInfo.InvariantCulture), model.Title);
if (lastVersion > 0)
FileStorageService.UpdateToVersion(fileId.ToString(CultureInfo.InvariantCulture), lastVersion);
if (model.Version > 0)
FileStorageService.UpdateToVersion(fileId.ToString(CultureInfo.InvariantCulture), model.Version);
return GetFileInfo(fileId);
}

View File

@ -0,0 +1,13 @@
using ASC.Files.Core.Security;
namespace ASC.Files.Model
{
public class FileModelFull
{
public string FileId { get; set; }
public string ParentId { get; set; }
public string Title { get; set; }
public int Version { get; set; } = -1;
public FileShare Share { get; set; }
}
}

View File

@ -0,0 +1,7 @@
namespace ASC.Files.Model
{
public class FolderModel
{
public string Title { get; set; }
}
}

View File

@ -1,6 +1,6 @@
{
"name": "asc-web-common",
"version": "1.0.108",
"version": "1.0.110",
"description": "Ascensio System SIA common components and solutions library",
"license": "AGPL-3.0",
"files": [

View File

@ -3,119 +3,207 @@ import { request } from "../client";
import Filter from "./filter";
import * as fakeFiles from "./fake";
export function getFolder(folderId, filter = Filter.getDefault(), fake = false) {
export function getFolderInfo(folderId) {
const options = {
method: "get",
url: `/files/folder/${folderId}`
};
return request(options);
}
export function getFolderPath(folderId) {
const options = {
method: "get",
url: `/files/folder/${folderId}/path`
};
return request(options);
}
export function getFolder(folderId, filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "Fake folder");
}
return request({
const options = {
method: "get",
url: `/files/${folderId}.json`
});
}
url: `/files/${folderId}`
};
export function getFolderInfo(folderId) {
return request({
method: "get",
url: `/files/folder/${folderId}`
});
}
export function getFolderPath(folderId) {
return request({
method: "get",
url: `/files/folder/${folderId}/path`
});
return request(options);
}
export function getMyFolderList(filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "My Documents");
}
return request({
const options = {
method: "get",
url: `/files/@my.json`
});
url: `/files/@my`
};
return request(options);
}
export function getCommonFolderList(filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "Common Documents");
}
return request({
const options = {
method: "get",
url: `/files/@common.json`
});
url: `/files/@common`
};
return request(options);
}
export function getProjectsFolderList(filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "Project Documents");
}
return request({
const options = {
method: "get",
url: `/files/@projects.json`
});
url: `/files/@projects`
};
return request(options);
}
export function getTrashFolderList(filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "Recycle Bin");
}
return request({
const options = {
method: "get",
url: `/files/@trash.json`
});
url: `/files/@trash`
};
return request(options);
}
export function getSharedFolderList(filter = Filter.getDefault(), fake = false) {
if (fake) {
return fakeFiles.getFakeElements(filter, "Shared with Me");
}
return request({
const options = {
method: "get",
url: `/files/@share.json`
});
url: `/files/@share`
};
return request(options);
}
export function createFolder(parentFolderId, title) {
const data = { title };
const options = {
method: "post",
url: `/files/folder/${parentFolderId}`,
data
};
return request(options);
}
export function renameFolder(folderId, title) {
const data = { title };
const options = {
method: "put",
url: `/files/folder/${folderId}`,
data
};
return request(options);
}
export function deleteFolder(folderId, deleteAfter, immediately) {
const data = { deleteAfter, immediately };
const options = {
method: "delete",
url: `/files/folder/${folderId}`,
data
};
return request(options);
}
export function createFile(folderId, title) {
const data = { title };
const options = {
method: "post",
url: `/files/${folderId}/file`,
data
};
return request(options);
}
export function createTextFile(folderId, title, content) {
const data = { title, content };
const options = {
method: "post",
url: `/files/${folderId}/text`,
data
};
return request(options);
}
export function createTextFileInMy(title) {
const data = { title };
const options = {
method: "post",
url: "/files/@my/file",
data: { title }
data
};
return request(options);
}
export function createTextFileInCommon(title) {
const data = { title };
const options = {
method: "post",
url: "/files/@common/file",
data: { title }
data
};
return request(options);
}
export function createTextFile(folderId, title) {
export function createHtmlFile(folderId, title, content) {
const data = { title, content };
const options = {
method: "post",
url: `/files/${folderId}/file`,
data: { title }
url: `/files/${folderId}/html`,
data
};
return request(options);
}
export function createHtmlFileInMy(title, content) {
const data = { title, content };
const options = {
method: "post",
url: "/files/@my/html",
data
};
return request(options);
}
export function createHtmlFileInCommon(title, content) {
const data = { title, content };
const options = {
method: "post",
url: "/files/@common/html",
data
};
return request(options);
@ -131,49 +219,23 @@ export function getFileInfo(fileId) {
}
export function updateFile(fileId, title, lastVersion) {
const data = { title, lastVersion };
const options = {
method: "put",
url: `/files/file/${fileId}?title=${title}${lastVersion ? `lastVersion=${lastVersion}` : ``}`
};
return request(options);
}
export function createFolder(parentFolderId, title) {
const options = {
method: "post",
url: `/files/folder/${parentFolderId}?title=${title}`,
};
return request(options);
}
export function renameFolder(folderId, title) {
const options = {
method: "put",
url: `/files/folder/${folderId}?title=${title}`
};
return request(options);
}
export function deleteFolder(folderId, deleteAfter, immediately) {
const data = { deleteAfter, immediately };
return request({
method: "delete",
url: `/files/folder/${folderId}`,
url: `/files/file/${fileId}`,
data
});
};
return request(options);
}
export function deleteFile(fileId, deleteAfter, immediately) {
const data = { deleteAfter, immediately };
return request({
const options = {
method: "delete",
url: `/files/file/${fileId}`,
url: `/files/file/${fileId}`,
data
});
};
return request(options);
}