Merge branch 'develop' of github.com:ONLYOFFICE/AppServer into feature/floating-button
This commit is contained in:
commit
86425fac97
@ -87,7 +87,7 @@ namespace ASC.Files.Core
|
||||
/// </summary>
|
||||
/// <param name="fileIds">id file</param>
|
||||
/// <returns></returns>
|
||||
List<File<T>> GetFiles(T[] fileIds);
|
||||
List<File<T>> GetFiles(IEnumerable<T> fileIds);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the file (s) by ID (s) for share
|
||||
@ -99,7 +99,7 @@ namespace ASC.Files.Core
|
||||
/// <param name="searchText"></param>
|
||||
/// <param name="searchInContent"></param>
|
||||
/// <returns></returns>
|
||||
List<File<T>> GetFilesFiltered(T[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent);
|
||||
List<File<T>> GetFilesFiltered(IEnumerable<T> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
@ -280,7 +280,7 @@ namespace ASC.Files.Core
|
||||
/// <param name="searchText"></param>
|
||||
/// <param name="searchInContent"></param>
|
||||
/// <returns></returns>
|
||||
List<File<T>> GetFiles(T[] parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent);
|
||||
List<File<T>> GetFiles(IEnumerable<T> parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent);
|
||||
|
||||
/// <summary>
|
||||
/// Search the list of files containing text
|
||||
|
@ -95,7 +95,7 @@ namespace ASC.Files.Core
|
||||
/// <param name="searchSubfolders"></param>
|
||||
/// <param name="checkShare"></param>
|
||||
/// <returns></returns>
|
||||
List<Folder<T>> GetFolders(T[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true);
|
||||
List<Folder<T>> GetFolders(IEnumerable<T> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true);
|
||||
|
||||
/// <summary>
|
||||
/// Get folder, contains folder with id
|
||||
|
@ -170,9 +170,9 @@ namespace ASC.Files.Core.Data
|
||||
return FromQueryWithShared(query).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<int>> GetFiles(int[] fileIds)
|
||||
public List<File<int>> GetFiles(IEnumerable<int> fileIds)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0) return new List<File<int>>();
|
||||
if (fileIds == null || !fileIds.Any()) return new List<File<int>>();
|
||||
|
||||
var query = GetFileQuery(r => fileIds.Any(a => a == r.Id) && r.CurrentVersion)
|
||||
.AsNoTracking();
|
||||
@ -180,9 +180,9 @@ namespace ASC.Files.Core.Data
|
||||
return FromQueryWithShared(query).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<int>> GetFilesFiltered(int[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<int>> GetFilesFiltered(IEnumerable<int> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
||||
|
||||
var query = GetFileQuery(r => fileIds.Any(a => a == r.Id) && r.CurrentVersion).AsNoTracking();
|
||||
|
||||
@ -190,7 +190,7 @@ namespace ASC.Files.Core.Data
|
||||
{
|
||||
var func = GetFuncForSearch(null, null, filterType, subjectGroup, subjectID, searchText, searchInContent, false);
|
||||
|
||||
if (FactoryIndexer.TrySelectIds(s => func(s).In(r => r.Id, fileIds), out var searchIds))
|
||||
if (FactoryIndexer.TrySelectIds(s => func(s).In(r => r.Id, fileIds.ToArray()), out var searchIds))
|
||||
{
|
||||
query = query.Where(r => searchIds.Any(b => b == r.Id));
|
||||
}
|
||||
@ -1037,9 +1037,9 @@ namespace ASC.Files.Core.Data
|
||||
FilesDbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public List<File<int>> GetFiles(int[] parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<int>> GetFiles(IEnumerable<int> parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (parentIds == null || parentIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
||||
if (parentIds == null || !parentIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<int>>();
|
||||
|
||||
var q = GetFileQuery(r => r.CurrentVersion)
|
||||
.AsNoTracking()
|
||||
|
@ -219,7 +219,7 @@ namespace ASC.Files.Core.Data
|
||||
return FromQueryWithShared(q).Select(ToFolder).ToList();
|
||||
}
|
||||
|
||||
public List<Folder<int>> GetFolders(int[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<int>> GetFolders(IEnumerable<int> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -243,7 +243,7 @@ namespace ASC.Files.Core.Data
|
||||
if (FactoryIndexer.TrySelectIds(s =>
|
||||
searchSubfolders
|
||||
? s.MatchAll(searchText)
|
||||
: s.MatchAll(searchText).In(r => r.Id, folderIds),
|
||||
: s.MatchAll(searchText).In(r => r.Id, folderIds.ToArray()),
|
||||
out var searchIds))
|
||||
{
|
||||
q = q.Where(r => searchIds.Any(a => a == r.Id));
|
||||
@ -325,7 +325,7 @@ namespace ASC.Files.Core.Data
|
||||
var newFolder = new DbFolder
|
||||
{
|
||||
Id = 0,
|
||||
ParentId = folder.ParentFolderID,
|
||||
ParentId = folder.FolderID,
|
||||
Title = folder.Title,
|
||||
CreateOn = TenantUtil.DateTimeToUtc(folder.CreateOn),
|
||||
CreateBy = folder.CreateBy,
|
||||
@ -353,7 +353,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
//full path to root
|
||||
var oldTree = FilesDbContext.Tree
|
||||
.Where(r => r.FolderId == folder.ParentFolderID);
|
||||
.Where(r => r.FolderId == folder.FolderID);
|
||||
|
||||
foreach (var o in oldTree)
|
||||
{
|
||||
@ -569,7 +569,7 @@ namespace ASC.Files.Core.Data
|
||||
folder.FolderType = FolderType.DEFAULT;
|
||||
|
||||
var copy = ServiceProvider.GetService<Folder<int>>();
|
||||
copy.ParentFolderID = toFolderId;
|
||||
copy.FolderID = toFolderId;
|
||||
copy.RootFolderId = toFolder.RootFolderId;
|
||||
copy.RootFolderCreator = toFolder.RootFolderCreator;
|
||||
copy.RootFolderType = toFolder.RootFolderType;
|
||||
@ -912,7 +912,7 @@ namespace ASC.Files.Core.Data
|
||||
if (createIfNotExists)
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
||||
folder.ParentFolderID = 0;
|
||||
folder.FolderID = 0;
|
||||
switch (bunch)
|
||||
{
|
||||
case my:
|
||||
@ -1080,7 +1080,7 @@ namespace ASC.Files.Core.Data
|
||||
if (r == null) return null;
|
||||
var result = ServiceProvider.GetService<Folder<int>>();
|
||||
result.ID = r.Folder.Id;
|
||||
result.ParentFolderID = r.Folder.ParentId;
|
||||
result.FolderID = r.Folder.ParentId;
|
||||
result.Title = r.Folder.Title;
|
||||
result.CreateOn = TenantUtil.DateTimeFromUtc(r.Folder.CreateOn);
|
||||
result.CreateBy = r.Folder.CreateBy;
|
||||
@ -1132,7 +1132,7 @@ namespace ASC.Files.Core.Data
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.ParentFolderID)) result.RootFolderType = result.FolderType;
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.FolderID)) result.RootFolderType = result.FolderType;
|
||||
if (result.FolderType != FolderType.DEFAULT && result.RootFolderCreator == default) result.RootFolderCreator = result.CreateBy;
|
||||
if (result.FolderType != FolderType.DEFAULT && 0.Equals(result.RootFolderId)) result.RootFolderId = result.ID;
|
||||
|
||||
|
@ -77,8 +77,6 @@ namespace ASC.Files.Core
|
||||
FileConverter = fileConverter;
|
||||
}
|
||||
|
||||
public T FolderID { get; set; }
|
||||
|
||||
public int Version { get; set; }
|
||||
|
||||
[JsonPropertyName("version_group")]
|
||||
@ -242,19 +240,5 @@ namespace ASC.Files.Core
|
||||
|
||||
[NonSerialized]
|
||||
private readonly FileConverter FileConverter;
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
[JsonPropertyName("folder_id")]
|
||||
public override T FolderIdDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return FolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
}
|
||||
}
|
@ -129,13 +129,22 @@ namespace ASC.Files.Core
|
||||
{
|
||||
}
|
||||
|
||||
public T ID { get; set; }
|
||||
public T ID { get; set; }
|
||||
|
||||
public T FolderID { get; set; }
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
[JsonPropertyName("folder_id")]
|
||||
public abstract T FolderIdDisplay
|
||||
public T FolderIdDisplay
|
||||
{
|
||||
get;
|
||||
set;
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return FolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
|
||||
public T RootFolderId { get; set; }
|
||||
|
@ -68,8 +68,6 @@ namespace ASC.Files.Core
|
||||
{
|
||||
public FolderType FolderType { get; set; }
|
||||
|
||||
public T ParentFolderID { get; set; }
|
||||
|
||||
public int TotalFiles { get; set; }
|
||||
|
||||
public int TotalSubFolders { get; set; }
|
||||
@ -86,19 +84,6 @@ namespace ASC.Files.Core
|
||||
set { NewForMe = Convert.ToInt32(value); }
|
||||
}
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
public override T FolderIdDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_folderIdDisplay != null) return _folderIdDisplay;
|
||||
|
||||
return ParentFolderID;
|
||||
}
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
|
||||
public Folder(Global global)
|
||||
: base(global)
|
||||
{
|
||||
|
@ -300,8 +300,8 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var prevVisible = breadCrumbs.ElementAtOrDefault(breadCrumbs.Count() - 2);
|
||||
if (prevVisible != null)
|
||||
{
|
||||
if (prevVisible is Folder<string> f1) parent.ParentFolderID = (T)Convert.ChangeType(f1.ID, typeof(T));
|
||||
if (prevVisible is Folder<int> f2) parent.ParentFolderID = (T)Convert.ChangeType(f2.ID, typeof(T));
|
||||
if (prevVisible is Folder<string> f1) parent.FolderID = (T)Convert.ChangeType(f1.ID, typeof(T));
|
||||
if (prevVisible is Folder<int> f2) parent.FolderID = (T)Convert.ChangeType(f2.ID, typeof(T));
|
||||
}
|
||||
|
||||
parent.Shareable = FileSharing.CanSetAccess(parent)
|
||||
@ -348,11 +348,11 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
var folderDao = DaoFactory.GetFolderDao<TId>();
|
||||
var fileDao = DaoFactory.GetFileDao<TId>();
|
||||
var folders = folderDao.GetFolders(foldersId.ToArray());
|
||||
var folders = folderDao.GetFolders(foldersId);
|
||||
folders = FileSecurity.FilterRead(folders).ToList();
|
||||
entries = entries.Concat(folders);
|
||||
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
files = FileSecurity.FilterRead(files).ToList();
|
||||
entries = entries.Concat(files);
|
||||
|
||||
@ -398,7 +398,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = title;
|
||||
newFolder.ParentFolderID = parent.ID;
|
||||
newFolder.FolderID = parent.ID;
|
||||
|
||||
var folderId = folderDao.SaveFolder(newFolder);
|
||||
var folder = folderDao.GetFolder(folderId);
|
||||
@ -446,7 +446,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
if (folder.RootFolderType == FolderType.USER
|
||||
&& !Equals(folder.RootFolderCreator, AuthContext.CurrentAccount.ID)
|
||||
&& !FileSecurity.CanRead(folderDao.GetFolder(folder.ParentFolderID)))
|
||||
&& !FileSecurity.CanRead(folderDao.GetFolder(folder.FolderID)))
|
||||
{
|
||||
folder.FolderIdDisplay = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
@ -676,7 +676,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var result = new ItemDictionary<string, string>();
|
||||
|
||||
var fileDao = GetFileDao();
|
||||
var ids = filesId.Where(FileTracker.IsEditing).Select(id => id).ToArray();
|
||||
var ids = filesId.Where(FileTracker.IsEditing).Select(id => id).ToList();
|
||||
|
||||
foreach (var file in fileDao.GetFiles(ids))
|
||||
{
|
||||
@ -1394,7 +1394,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
}
|
||||
}
|
||||
|
||||
var folders = folderDao.GetFolders(foldersId.ToArray());
|
||||
var folders = folderDao.GetFolders(foldersId);
|
||||
var foldersProject = folders.Where(folder => folder.FolderType == FolderType.BUNCH).ToList();
|
||||
if (foldersProject.Any())
|
||||
{
|
||||
@ -1556,7 +1556,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var folderIdToMy = folderDao.GetFolderIDUser(true, userTo.ID);
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = string.Format(CustomNamingPeople.Substitute<FilesCommonResource>("TitleDeletedUserFolder"), userFrom.DisplayUserName(false, DisplayUserSettingsHelper));
|
||||
newFolder.ParentFolderID = folderIdToMy;
|
||||
newFolder.FolderID = folderIdToMy;
|
||||
|
||||
var newFolderTo = folderDao.SaveFolder(newFolder);
|
||||
|
||||
@ -1608,7 +1608,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
rootFoldersId.Add(folderIdFromMy);
|
||||
}
|
||||
|
||||
var rootFolders = folderDao.GetFolders(rootFoldersId.ToArray());
|
||||
var rootFolders = folderDao.GetFolders(rootFoldersId);
|
||||
foreach (var rootFolder in rootFolders)
|
||||
{
|
||||
FileMarker.RemoveMarkAsNew(rootFolder, userId);
|
||||
@ -1646,11 +1646,11 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var folderDao = GetFolderDao();
|
||||
var entries = Enumerable.Empty<FileEntry<T>>();
|
||||
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
files = FileSecurity.FilterRead(files).ToList();
|
||||
entries = entries.Concat(files);
|
||||
|
||||
var folders = folderDao.GetFolders(foldersId.ToArray());
|
||||
var folders = folderDao.GetFolders(foldersId);
|
||||
folders = FileSecurity.FilterRead(folders).ToList();
|
||||
entries = entries.Concat(folders);
|
||||
|
||||
@ -1668,11 +1668,11 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var folderDao = GetFolderDao();
|
||||
var entries = Enumerable.Empty<FileEntry<T>>();
|
||||
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
files = FileSecurity.FilterRead(files).ToList();
|
||||
entries = entries.Concat(files);
|
||||
|
||||
var folders = folderDao.GetFolders(foldersId.ToArray());
|
||||
var folders = folderDao.GetFolders(foldersId);
|
||||
folders = FileSecurity.FilterRead(folders).ToList();
|
||||
entries = entries.Concat(folders);
|
||||
|
||||
@ -1693,7 +1693,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
var tagDao = GetTagDao();
|
||||
var fileDao = GetFileDao();
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
|
||||
files = FileSecurity.FilterRead(files)
|
||||
.Where(file => FileUtility.ExtsWebTemplate.Contains(FileUtility.GetFileExtension(file.Title), StringComparer.CurrentCultureIgnoreCase))
|
||||
@ -1710,7 +1710,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
{
|
||||
var tagDao = GetTagDao();
|
||||
var fileDao = GetFileDao();
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
|
||||
files = FileSecurity.FilterRead(files).ToList();
|
||||
|
||||
@ -2037,7 +2037,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var entries = new List<FileEntry<T>>();
|
||||
|
||||
var folderDao = GetFolderDao();
|
||||
var folders = folderDao.GetFolders(foldersId.ToArray());
|
||||
var folders = folderDao.GetFolders(foldersId);
|
||||
|
||||
foreach (var folder in folders)
|
||||
{
|
||||
@ -2062,7 +2062,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
}
|
||||
|
||||
var fileDao = GetFileDao();
|
||||
var files = fileDao.GetFiles(filesId.ToArray());
|
||||
var files = fileDao.GetFiles(filesId);
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
|
@ -110,6 +110,11 @@ namespace ASC.Files.Core.Security
|
||||
public List<Tuple<FileEntry<T>, bool>> CanRead<T>(IEnumerable<FileEntry<T>> entry, Guid userId)
|
||||
{
|
||||
return Can(entry, userId, FilesSecurityActions.Read);
|
||||
}
|
||||
|
||||
public List<Tuple<FileEntry<T>, bool>> CanRead<T>(IEnumerable<FileEntry<T>> entry)
|
||||
{
|
||||
return Can(entry, AuthContext.CurrentAccount.ID, FilesSecurityActions.Read);
|
||||
}
|
||||
|
||||
public bool CanRead<T>(FileEntry<T> entry, Guid userId)
|
||||
@ -574,8 +579,8 @@ namespace ASC.Files.Core.Security
|
||||
var folderDao = daoFactory.GetFolderDao<T>();
|
||||
var filteredEntries = entries.Where(filter).ToList();
|
||||
var roots = filteredEntries
|
||||
.Select(r => r.RootFolderId)
|
||||
.ToArray();
|
||||
.Select(r => r.RootFolderId)
|
||||
.ToList();
|
||||
|
||||
var rootsFolders = folderDao.GetFolders(roots);
|
||||
var bunches = folderDao.GetBunchObjectIDs(rootsFolders.Select(r => r.ID).ToList());
|
||||
@ -756,7 +761,7 @@ namespace ASC.Files.Core.Security
|
||||
|
||||
if (filterType == FilterType.None || filterType == FilterType.FoldersOnly)
|
||||
{
|
||||
var folders = folderDao.GetFolders(folderIds.Keys.ToArray(), filterType, subjectGroup, subjectID, searchText, withSubfolders, false);
|
||||
var folders = folderDao.GetFolders(folderIds.Keys, filterType, subjectGroup, subjectID, searchText, withSubfolders, false);
|
||||
|
||||
if (withSubfolders)
|
||||
{
|
||||
@ -776,7 +781,7 @@ namespace ASC.Files.Core.Security
|
||||
|
||||
if (filterType != FilterType.FoldersOnly && withSubfolders)
|
||||
{
|
||||
var filesInSharedFolders = fileDao.GetFiles(folderIds.Keys.ToArray(), filterType, subjectGroup, subjectID, searchText, searchInContent);
|
||||
var filesInSharedFolders = fileDao.GetFiles(folderIds.Keys, filterType, subjectGroup, subjectID, searchText, searchInContent);
|
||||
filesInSharedFolders = FilterRead(filesInSharedFolders).ToList();
|
||||
entries.AddRange(filesInSharedFolders);
|
||||
entries = entries.Distinct().ToList();
|
||||
@ -875,7 +880,7 @@ namespace ASC.Files.Core.Security
|
||||
|
||||
if (filterType == FilterType.None || filterType == FilterType.FoldersOnly)
|
||||
{
|
||||
var folders = folderDao.GetFolders(folderIds.Keys.ToArray(), filterType, subjectGroup, subjectID, searchText, withSubfolders, false);
|
||||
var folders = folderDao.GetFolders(folderIds.Keys, filterType, subjectGroup, subjectID, searchText, withSubfolders, false);
|
||||
|
||||
if (withSubfolders)
|
||||
{
|
||||
@ -895,7 +900,7 @@ namespace ASC.Files.Core.Security
|
||||
|
||||
if (filterType != FilterType.FoldersOnly && withSubfolders)
|
||||
{
|
||||
var filesInSharedFolders = fileDao.GetFiles(folderIds.Keys.ToArray(), filterType, subjectGroup, subjectID, searchText, searchInContent);
|
||||
var filesInSharedFolders = fileDao.GetFiles(folderIds.Keys, filterType, subjectGroup, subjectID, searchText, searchInContent);
|
||||
filesInSharedFolders = FilterRead(filesInSharedFolders).ToList();
|
||||
entries.AddRange(filesInSharedFolders);
|
||||
entries = entries.Distinct().ToList();
|
||||
|
@ -128,7 +128,7 @@ namespace ASC.Files.Thirdparty.Box
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(boxFolder.Id);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(boxFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderId(boxFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (boxFolder.CreatedAt ?? default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (boxFolder.ModifiedAt ?? default);
|
||||
|
||||
|
@ -108,15 +108,15 @@ namespace ASC.Files.Thirdparty.Box
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any()) return new List<File<string>>();
|
||||
return fileIds.Select(GetBoxFile).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -130,7 +130,7 @@ namespace ASC.Files.Thirdparty.Box
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -184,9 +184,9 @@ namespace ASC.Files.Thirdparty.Box
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var boxFolderId = MakeBoxId(folder.ParentFolderID);
|
||||
var boxFolderId = MakeBoxId(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, boxFolderId, IsExist);
|
||||
|
||||
|
@ -111,7 +111,7 @@ namespace ASC.Files.Core.Thirdparty
|
||||
|
||||
var toFolder1 = ServiceProvider.GetService<Folder<TTo>>();
|
||||
toFolder1.Title = fromFolder.Title;
|
||||
toFolder1.ParentFolderID = toConverter(toRootFolderId);
|
||||
toFolder1.FolderID = toConverter(toRootFolderId);
|
||||
|
||||
var toFolder = toFolderDao.GetFolder(fromFolder.Title, toConverter(toRootFolderId));
|
||||
var toFolderId = toFolder != null
|
||||
|
@ -123,7 +123,7 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(dropboxFolder);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderPath(dropboxFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderPath(dropboxFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : default;
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : default;
|
||||
folder.Title = MakeFolderTitle(dropboxFolder);
|
||||
|
@ -112,15 +112,15 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any()) return new List<File<string>>();
|
||||
return fileIds.Select(GetDropboxFile).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -131,7 +131,7 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -185,9 +185,9 @@ namespace ASC.Files.Thirdparty.Dropbox
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var dropboxFolderPath = MakeDropboxPath(folder.ParentFolderID);
|
||||
var dropboxFolderPath = MakeDropboxPath(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, dropboxFolderPath, IsExist);
|
||||
|
||||
|
@ -137,7 +137,7 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(driveEntry);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentDriveId(driveEntry));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentDriveId(driveEntry));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (driveEntry.CreatedTime ?? default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (driveEntry.ModifiedTime ?? default);
|
||||
|
||||
|
@ -109,15 +109,15 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any()) return new List<File<string>>();
|
||||
return fileIds.Select(GetDriveEntry).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -127,7 +127,7 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -181,9 +181,9 @@ namespace ASC.Files.Thirdparty.GoogleDrive
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var driveFolderId = MakeDriveId(folder.ParentFolderID);
|
||||
var driveFolderId = MakeDriveId(folder.FolderID);
|
||||
|
||||
var driveFolder = ProviderInfo.Storage.InsertEntry(null, folder.Title, driveFolderId, true);
|
||||
|
||||
|
@ -34,7 +34,7 @@ namespace ASC.Files.Thirdparty
|
||||
{
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> parentIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
return new List<File<string>>();
|
||||
}
|
||||
@ -280,7 +280,7 @@ namespace ASC.Files.Thirdparty
|
||||
|
||||
InitFileEntryError(folder, entry);
|
||||
|
||||
folder.ParentFolderID = null;
|
||||
folder.FolderID = null;
|
||||
|
||||
return folder;
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(isRoot ? string.Empty : onedriveFolder.Id);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(onedriveFolder));
|
||||
folder.FolderID = isRoot ? null : MakeId(GetParentFolderId(onedriveFolder));
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : (onedriveFolder.CreatedDateTime.HasValue ? TenantUtil.DateTimeFromUtc(onedriveFolder.CreatedDateTime.Value.DateTime) : default);
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : (onedriveFolder.LastModifiedDateTime.HasValue ? TenantUtil.DateTimeFromUtc(onedriveFolder.LastModifiedDateTime.Value.DateTime) : default);
|
||||
|
||||
|
@ -108,15 +108,15 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any()) return new List<File<string>>();
|
||||
return fileIds.Select(GetOneDriveItem).Select(ToFile).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -127,7 +127,7 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -181,9 +181,9 @@ namespace ASC.Files.Thirdparty.OneDrive
|
||||
return RenameFolder(folder, folder.Title);
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var onedriveFolderId = MakeOneDriveId(folder.ParentFolderID);
|
||||
var onedriveFolderId = MakeOneDriveId(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, onedriveFolderId, IsExist);
|
||||
|
||||
|
@ -124,7 +124,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
return fileDao.GetFileHistory(selector.ConvertId(fileId));
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
var result = Enumerable.Empty<File<string>>();
|
||||
|
||||
@ -139,7 +139,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
.SelectMany(matchedId =>
|
||||
{
|
||||
var fileDao = selectorLocal.GetFileDao(matchedId.FirstOrDefault());
|
||||
return fileDao.GetFiles(matchedId.Select(selectorLocal.ConvertId).ToArray());
|
||||
return fileDao.GetFiles(matchedId.Select(selectorLocal.ConvertId).ToList());
|
||||
}
|
||||
)
|
||||
.Where(r => r != null));
|
||||
@ -148,7 +148,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
return result.ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
var result = Enumerable.Empty<File<string>>();
|
||||
|
||||
|
@ -110,7 +110,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
var result = Enumerable.Empty<Folder<string>>();
|
||||
|
||||
@ -126,7 +126,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
{
|
||||
var folderDao = selectorLocal.GetFolderDao(matchedId.FirstOrDefault());
|
||||
return folderDao
|
||||
.GetFolders(matchedId.Select(selectorLocal.ConvertId).ToArray(),
|
||||
.GetFolders(matchedId.Select(selectorLocal.ConvertId).ToList(),
|
||||
filterType, subjectGroup, subjectID, searchText, searchSubfolders, checkShare);
|
||||
})
|
||||
.Where(r => r != null));
|
||||
@ -156,14 +156,14 @@ filterType, subjectGroup, subjectID, searchText, searchSubfolders, checkShare);
|
||||
folder.ID = folderId;
|
||||
return newFolderId;
|
||||
}
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var folderId = folder.ParentFolderID;
|
||||
var folderId = folder.FolderID;
|
||||
var selector = GetSelector(folderId);
|
||||
folder.ParentFolderID = selector.ConvertId(folderId);
|
||||
folder.FolderID = selector.ConvertId(folderId);
|
||||
var folderDao = selector.GetFolderDao(folderId);
|
||||
var newFolderId = folderDao.SaveFolder(folder);
|
||||
folder.ParentFolderID = folderId;
|
||||
folder.FolderID = folderId;
|
||||
return newFolderId;
|
||||
|
||||
}
|
||||
@ -277,7 +277,7 @@ filterType, subjectGroup, subjectID, searchText, searchSubfolders, checkShare);
|
||||
var folderId = folder.ID;
|
||||
var selector = GetSelector(folderId);
|
||||
folder.ID = selector.ConvertId(folderId);
|
||||
folder.ParentFolderID = selector.ConvertId(folder.ParentFolderID);
|
||||
folder.FolderID = selector.ConvertId(folder.FolderID);
|
||||
var folderDao = selector.GetFolderDao(folderId);
|
||||
return folderDao.RenameFolder(folder, newTitle);
|
||||
}
|
||||
|
@ -101,14 +101,14 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
return fileIds.Select(fileId => ProviderInfo.ToFile(ProviderInfo.GetFileById(fileId))).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -135,7 +135,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -183,9 +183,9 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
return ProviderInfo.ToFolder(savedfolder).ID;
|
||||
}
|
||||
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var parentFolder = ProviderInfo.GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = ProviderInfo.GetFolderById(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, parentFolder, IsExist);
|
||||
|
||||
|
@ -500,7 +500,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
if (folder is SharePointFolderErrorEntry errorFolder)
|
||||
{
|
||||
result.ID = MakeId(errorFolder.ID);
|
||||
result.ParentFolderID = null;
|
||||
result.FolderID = null;
|
||||
result.CreateBy = Owner;
|
||||
result.CreateOn = DateTime.UtcNow;
|
||||
result.FolderType = FolderType.DEFAULT;
|
||||
@ -523,7 +523,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
var isRoot = folder.ServerRelativeUrl == SpRootFolderId;
|
||||
|
||||
result.ID = MakeId(isRoot ? "" : folder.ServerRelativeUrl);
|
||||
result.ParentFolderID = isRoot ? null : MakeId(GetParentFolderId(folder.ServerRelativeUrl));
|
||||
result.FolderID = isRoot ? null : MakeId(GetParentFolderId(folder.ServerRelativeUrl));
|
||||
result.CreateBy = Owner;
|
||||
result.CreateOn = CreateOn;
|
||||
result.FolderType = FolderType.DEFAULT;
|
||||
|
@ -281,7 +281,7 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
var folder = GetFolder();
|
||||
|
||||
folder.ID = MakeId(fsEntry);
|
||||
folder.ParentFolderID = isRoot ? null : MakeId(fsEntry.Parent);
|
||||
folder.FolderID = isRoot ? null : MakeId(fsEntry.Parent);
|
||||
folder.CreateOn = isRoot ? ProviderInfo.CreateOn : fsEntry.Modified;
|
||||
folder.ModifiedOn = isRoot ? ProviderInfo.CreateOn : fsEntry.Modified;
|
||||
folder.RootFolderId = MakeId(RootFolder());
|
||||
|
@ -106,14 +106,14 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
return new List<File<string>> { GetFile(fileId) };
|
||||
}
|
||||
|
||||
public List<File<string>> GetFiles(string[] fileIds)
|
||||
public List<File<string>> GetFiles(IEnumerable<string> fileIds)
|
||||
{
|
||||
return fileIds.Select(fileId => ToFile(GetFileById(fileId))).ToList();
|
||||
}
|
||||
|
||||
public List<File<string>> GetFilesFiltered(string[] fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
public List<File<string>> GetFilesFiltered(IEnumerable<string> fileIds, FilterType filterType, bool subjectGroup, Guid subjectID, string searchText, bool searchInContent)
|
||||
{
|
||||
if (fileIds == null || fileIds.Length == 0 || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
if (fileIds == null || !fileIds.Any() || filterType == FilterType.FoldersOnly) return new List<File<string>>();
|
||||
|
||||
var files = GetFiles(fileIds).AsEnumerable();
|
||||
|
||||
|
@ -138,7 +138,7 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
return folders.ToList();
|
||||
}
|
||||
|
||||
public List<Folder<string>> GetFolders(string[] folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
public List<Folder<string>> GetFolders(IEnumerable<string> folderIds, FilterType filterType = FilterType.None, bool subjectGroup = false, Guid? subjectID = null, string searchText = "", bool searchSubfolders = false, bool checkShare = true)
|
||||
{
|
||||
if (filterType == FilterType.FilesOnly || filterType == FilterType.ByExtension
|
||||
|| filterType == FilterType.DocumentsOnly || filterType == FilterType.ImagesOnly
|
||||
@ -186,9 +186,9 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
var savedfolder = ProviderInfo.Storage.CreateFolder(MakePath(folder.ID));
|
||||
return MakeId(savedfolder);
|
||||
}
|
||||
if (folder.ParentFolderID != null)
|
||||
if (folder.FolderID != null)
|
||||
{
|
||||
var parentFolder = GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = GetFolderById(folder.FolderID);
|
||||
|
||||
folder.Title = GetAvailableTitle(folder.Title, parentFolder, IsExist);
|
||||
|
||||
@ -390,7 +390,7 @@ namespace ASC.Files.Thirdparty.Sharpbox
|
||||
}
|
||||
else
|
||||
{
|
||||
var parentFolder = GetFolderById(folder.ParentFolderID);
|
||||
var parentFolder = GetFolderById(folder.FolderID);
|
||||
newTitle = GetAvailableTitle(newTitle, parentFolder, IsExist);
|
||||
|
||||
//rename folder
|
||||
|
@ -566,7 +566,7 @@ namespace ASC.Web.Files.Classes
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<T>>();
|
||||
folder.Title = folderName;
|
||||
folder.ParentFolderID = folderId;
|
||||
folder.FolderID = folderId;
|
||||
|
||||
var subFolderId = folderDao.SaveFolder(folder);
|
||||
|
||||
|
@ -198,16 +198,16 @@ namespace ASC.Api.Documents
|
||||
IEnumerable<FileEntryWrapper> GetFolders<T>(IEnumerable<T> folders)
|
||||
{
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
return folderDao.GetFolders(folders.ToArray())
|
||||
.Select(FolderWrapperHelper.Get)
|
||||
return folderDao.GetFolders(folders)
|
||||
.Select(r => FolderWrapperHelper.Get(r))
|
||||
.Cast<FileEntryWrapper>();
|
||||
}
|
||||
|
||||
IEnumerable<FileEntryWrapper> GetFiles<T>(IEnumerable<T> files)
|
||||
{
|
||||
var fileDao = DaoFactory.GetFileDao<T>();
|
||||
return fileDao.GetFiles(files.ToArray())
|
||||
.Select(FilesWrapperHelper.Get)
|
||||
return fileDao.GetFiles(files)
|
||||
.Select(r => FilesWrapperHelper.Get(r))
|
||||
.Cast<FileEntryWrapper>();
|
||||
}
|
||||
}
|
||||
|
@ -25,8 +25,10 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Utils;
|
||||
using ASC.Common;
|
||||
@ -171,47 +173,68 @@ namespace ASC.Api.Documents
|
||||
FileUtility = fileUtility;
|
||||
}
|
||||
|
||||
public FileWrapper<T> Get<T>(File<T> file)
|
||||
public FileWrapper<T> Get<T>(File<T> file, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||
{
|
||||
var result = Get<FileWrapper<T>, T>(file);
|
||||
var result = GetFileWrapper(file);
|
||||
|
||||
result.FolderId = file.FolderID;
|
||||
if (file.RootFolderType == FolderType.USER
|
||||
&& !Equals(file.RootFolderCreator, AuthContext.CurrentAccount.ID))
|
||||
{
|
||||
result.RootFolderType = FolderType.SHARE;
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
var parentFolder = folderDao.GetFolder(file.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
FileEntry<T> parentFolder;
|
||||
|
||||
if(folders != null)
|
||||
{
|
||||
var folderWithRight = folders.FirstOrDefault(f => f.Item1.ID.Equals(file.FolderID));
|
||||
if (folderWithRight == null || !folderWithRight.Item2)
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parentFolder = folderDao.GetFolder(file.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.FolderId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||
result.FileType = FileUtility.GetFileTypeByExtention(result.FileExst);
|
||||
|
||||
result.Version = file.Version;
|
||||
result.VersionGroup = file.VersionGroup;
|
||||
result.ContentLength = file.ContentLengthString;
|
||||
result.FileStatus = file.FileStatus;
|
||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||
result.Comment = file.Comment;
|
||||
return result;
|
||||
}
|
||||
|
||||
private FileWrapper<T> GetFileWrapper<T>(File<T> file)
|
||||
{
|
||||
var result = Get<FileWrapper<T>, T>(file);
|
||||
|
||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||
result.FileType = FileUtility.GetFileTypeByExtention(result.FileExst);
|
||||
result.Version = file.Version;
|
||||
result.VersionGroup = file.VersionGroup;
|
||||
result.ContentLength = file.ContentLengthString;
|
||||
result.FileStatus = file.FileStatus;
|
||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||
result.Comment = file.Comment;
|
||||
result.Encrypted = file.Encrypted.NullIfDefault();
|
||||
result.Locked = file.Locked.NullIfDefault();
|
||||
result.LockedBy = file.LockedBy;
|
||||
|
||||
try
|
||||
{
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
||||
|
||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Don't catch anything here because of httpcontext
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
try
|
||||
{
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
||||
|
||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//Don't catch anything here because of httpcontext
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
@ -32,6 +32,7 @@ using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Files.Core.Security;
|
||||
using ASC.Web.Files.Services.WCFService;
|
||||
|
||||
namespace ASC.Api.Documents
|
||||
@ -104,20 +105,29 @@ namespace ASC.Api.Documents
|
||||
|
||||
[Scope]
|
||||
public class FolderContentWrapperHelper
|
||||
{
|
||||
{
|
||||
private FileSecurity FileSecurity { get; }
|
||||
private IDaoFactory DaoFactory { get; }
|
||||
private FileWrapperHelper FileWrapperHelper { get; }
|
||||
private FolderWrapperHelper FolderWrapperHelper { get; }
|
||||
|
||||
public FolderContentWrapperHelper(
|
||||
public FolderContentWrapperHelper(
|
||||
FileSecurity fileSecurity,
|
||||
IDaoFactory daoFactory,
|
||||
FileWrapperHelper fileWrapperHelper,
|
||||
FolderWrapperHelper folderWrapperHelper)
|
||||
{
|
||||
{
|
||||
FileSecurity = fileSecurity;
|
||||
DaoFactory = daoFactory;
|
||||
FileWrapperHelper = fileWrapperHelper;
|
||||
FolderWrapperHelper = folderWrapperHelper;
|
||||
}
|
||||
|
||||
public FolderContentWrapper<T> Get<T>(DataWrapper<T> folderItems, int startIndex)
|
||||
{
|
||||
{
|
||||
var foldersIntWithRights = GetFoldersIntWithRights<int>();
|
||||
var foldersStringWithRights = GetFoldersIntWithRights<string>();
|
||||
|
||||
var result = new FolderContentWrapper<T>
|
||||
{
|
||||
Files = folderItems.Entries
|
||||
@ -127,11 +137,11 @@ namespace ASC.Api.Documents
|
||||
FileEntryWrapper wrapper = null;
|
||||
if (r is File<int> fol1)
|
||||
{
|
||||
wrapper = FileWrapperHelper.Get(fol1);
|
||||
wrapper = FileWrapperHelper.Get(fol1, foldersIntWithRights);
|
||||
}
|
||||
if (r is File<string> fol2)
|
||||
{
|
||||
wrapper = FileWrapperHelper.Get(fol2);
|
||||
wrapper = FileWrapperHelper.Get(fol2, foldersStringWithRights);
|
||||
}
|
||||
|
||||
return wrapper;
|
||||
@ -145,11 +155,11 @@ namespace ASC.Api.Documents
|
||||
FileEntryWrapper wrapper = null;
|
||||
if (r is Folder<int> fol1)
|
||||
{
|
||||
wrapper = FolderWrapperHelper.Get(fol1);
|
||||
wrapper = FolderWrapperHelper.Get(fol1, foldersIntWithRights);
|
||||
}
|
||||
if (r is Folder<string> fol2)
|
||||
{
|
||||
wrapper = FolderWrapperHelper.Get(fol2);
|
||||
wrapper = FolderWrapperHelper.Get(fol2, foldersStringWithRights);
|
||||
}
|
||||
|
||||
return wrapper;
|
||||
@ -164,7 +174,15 @@ namespace ASC.Api.Documents
|
||||
result.Total = folderItems.Total;
|
||||
result.New = folderItems.New;
|
||||
|
||||
return result;
|
||||
return result;
|
||||
|
||||
|
||||
List<Tuple<FileEntry<T1>, bool>> GetFoldersIntWithRights<T1>()
|
||||
{
|
||||
var folderDao = DaoFactory.GetFolderDao<T1>();
|
||||
var folders = folderDao.GetFolders(folderItems.Entries.OfType<FileEntry<T1>>().Select(r => r.FolderID).ToList());
|
||||
return FileSecurity.CanRead(folders);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,9 @@
|
||||
|
||||
|
||||
using System;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Utils;
|
||||
using ASC.Common;
|
||||
@ -113,27 +115,49 @@ namespace ASC.Api.Documents
|
||||
GlobalFolderHelper = globalFolderHelper;
|
||||
}
|
||||
|
||||
public FolderWrapper<T> Get<T>(Folder<T> folder)
|
||||
public FolderWrapper<T> Get<T>(Folder<T> folder, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||
{
|
||||
var result = Get<FolderWrapper<T>, T>(folder);
|
||||
result.ParentId = folder.ParentFolderID;
|
||||
var result = GetFolderWrapper(folder);
|
||||
|
||||
result.ParentId = folder.FolderID;
|
||||
|
||||
if (folder.RootFolderType == FolderType.USER
|
||||
&& !Equals(folder.RootFolderCreator, AuthContext.CurrentAccount.ID))
|
||||
{
|
||||
result.RootFolderType = FolderType.SHARE;
|
||||
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
var parentFolder = folderDao.GetFolder(folder.ParentFolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
var folderDao = DaoFactory.GetFolderDao<T>();
|
||||
FileEntry<T> parentFolder;
|
||||
|
||||
if (folders != null)
|
||||
{
|
||||
var folderWithRight = folders.FirstOrDefault(f => f.Item1.ID.Equals(folder.FolderID));
|
||||
if (folderWithRight == null || !folderWithRight.Item2)
|
||||
{
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parentFolder = folderDao.GetFolder(folder.FolderID);
|
||||
if (!FileSecurity.CanRead(parentFolder))
|
||||
{
|
||||
result.ParentId = GlobalFolderHelper.GetFolderShare<T>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private FolderWrapper<T> GetFolderWrapper<T>(Folder<T> folder)
|
||||
{
|
||||
var result = Get<FolderWrapper<T>, T>(folder);
|
||||
result.FilesCount = folder.TotalFiles;
|
||||
result.FoldersCount = folder.TotalSubFolders;
|
||||
result.IsShareable = folder.Shareable.NullIfDefault();
|
||||
result.New = folder.NewForMe;
|
||||
|
||||
return result;
|
||||
result.New = folder.NewForMe;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
@ -181,13 +181,13 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
var entriesPathId = new ItemNameValueCollection<T>();
|
||||
if (0 < Files.Count)
|
||||
{
|
||||
var files = FileDao.GetFiles(Files.ToArray());
|
||||
var files = FileDao.GetFiles(Files);
|
||||
files = FilesSecurity.FilterRead(files).ToList();
|
||||
files.ForEach(file => entriesPathId.Add(ExecPathFromFile(scope, file, string.Empty)));
|
||||
}
|
||||
if (0 < Folders.Count)
|
||||
{
|
||||
FilesSecurity.FilterRead(FolderDao.GetFolders(Files.ToArray())).ToList().Cast<FileEntry<T>>().ToList()
|
||||
FilesSecurity.FilterRead(FolderDao.GetFolders(Files)).Cast<FileEntry<T>>().ToList()
|
||||
.ForEach(folder => fileMarker.RemoveMarkAsNew(folder));
|
||||
|
||||
var filesInFolder = GetFilesInFolders(scope, Folders, string.Empty);
|
||||
|
@ -92,11 +92,11 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
var entries = new List<FileEntry<T>>();
|
||||
if (Folders.Any())
|
||||
{
|
||||
entries.AddRange(FolderDao.GetFolders(Folders.ToArray()));
|
||||
entries.AddRange(FolderDao.GetFolders(Folders));
|
||||
}
|
||||
if (Files.Any())
|
||||
{
|
||||
entries.AddRange(FileDao.GetFiles(Files.ToArray()));
|
||||
entries.AddRange(FileDao.GetFiles(Files));
|
||||
}
|
||||
entries.ForEach(x =>
|
||||
{
|
||||
|
@ -199,7 +199,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
Error = FilesCommonResource.ErrorMassage_SecurityException_MoveFolder;
|
||||
}
|
||||
else if (!Equals((folder.ParentFolderID ?? default).ToString(), toFolderId.ToString()) || _resolveType == FileConflictResolveType.Duplicate)
|
||||
else if (!Equals((folder.FolderID ?? default).ToString(), toFolderId.ToString()) || _resolveType == FileConflictResolveType.Duplicate)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -270,6 +270,9 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
CurrentTenant = fileOperationData.Tenant;
|
||||
|
||||
using var scope = ServiceProvider.CreateScope();
|
||||
var tenantManager = scope.ServiceProvider.GetService<TenantManager>();
|
||||
tenantManager.SetCurrentTenant(CurrentTenant);
|
||||
|
||||
var daoFactory = scope.ServiceProvider.GetService<IDaoFactory>();
|
||||
FolderDao = daoFactory.GetFolderDao<TId>();
|
||||
|
||||
|
@ -340,7 +340,7 @@ namespace ASC.Web.Files.Utils
|
||||
|
||||
folders.RemoveAll(folder => rootKeys.Contains(folder.ID));
|
||||
|
||||
var projectFolders = DaoFactory.GetFolderDao<int>().GetFolders(projectFolderIds.ToArray(), filter, subjectGroup, subjectId, null, false, false);
|
||||
var projectFolders = DaoFactory.GetFolderDao<int>().GetFolders(projectFolderIds.ToList(), filter, subjectGroup, subjectId, null, false, false);
|
||||
folders.AddRange(projectFolders);
|
||||
}
|
||||
|
||||
@ -554,7 +554,7 @@ namespace ASC.Web.Files.Utils
|
||||
|
||||
if (filter == FilterType.None || filter == FilterType.FoldersOnly)
|
||||
{
|
||||
var folderIds = tags.Where(tag => tag.EntryType == FileEntryType.Folder).Select(tag => (T)Convert.ChangeType(tag.EntryId, typeof(T))).ToArray();
|
||||
var folderIds = tags.Where(tag => tag.EntryType == FileEntryType.Folder).Select(tag => (T)Convert.ChangeType(tag.EntryId, typeof(T))).ToList();
|
||||
folders = folderDao.GetFolders(folderIds, filter, subjectGroup, subjectId, searchText, false, false);
|
||||
folders = folders.Where(folder => folder.RootFolderType != FolderType.TRASH).ToList();
|
||||
|
||||
@ -697,7 +697,7 @@ namespace ASC.Web.Files.Utils
|
||||
//Fake folder. Don't send request to third party
|
||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
||||
|
||||
folder.ParentFolderID = parentFolderId;
|
||||
folder.FolderID = parentFolderId;
|
||||
|
||||
folder.ID = providerInfo.RootFolderId;
|
||||
folder.CreateBy = providerInfo.Owner;
|
||||
|
@ -569,7 +569,7 @@ namespace ASC.Web.Files.Utils
|
||||
var parentId =
|
||||
entry.FileEntryType == FileEntryType.File
|
||||
? ((File<T>)entry).FolderID
|
||||
: ((Folder<T>)entry).ParentFolderID;
|
||||
: ((Folder<T>)entry).FolderID;
|
||||
|
||||
var parentEntry = entryTags.Keys.FirstOrDefault(entryCountTag => Equals(entryCountTag.ID, parentId));
|
||||
if (parentEntry != null)
|
||||
|
@ -213,7 +213,7 @@ namespace ASC.Web.Files.Utils
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
newFolder.Title = subFolderTitle;
|
||||
newFolder.ParentFolderID = folderId;
|
||||
newFolder.FolderID = folderId;
|
||||
|
||||
folderId = folderDao.SaveFolder(newFolder);
|
||||
|
||||
|
@ -58,6 +58,7 @@ using ASC.Web.Files.Utils;
|
||||
using ASC.Web.Studio.Core;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.ActionConstraints;
|
||||
@ -723,12 +724,14 @@ namespace ASC.Api.Documents
|
||||
/// <param name="doc"></param>
|
||||
/// <category>Files</category>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[Read("file/{fileId}/openedit", DisableFormat = true)]
|
||||
public Configuration<string> OpenEdit(string fileId, int version, string doc)
|
||||
{
|
||||
return FilesControllerHelperString.OpenEdit(fileId, version, doc);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Read("file/{fileId:int}/openedit")]
|
||||
public Configuration<int> OpenEdit(int fileId, int version, string doc)
|
||||
{
|
||||
@ -1799,7 +1802,7 @@ namespace ASC.Api.Documents
|
||||
public IEnumerable<FolderWrapper<string>> GetCommonThirdPartyFolders()
|
||||
{
|
||||
var parent = FileStorageServiceInt.GetFolder(GlobalFolderHelper.FolderCommon);
|
||||
return EntryManager.GetThirpartyFolders(parent).Select(FolderWrapperHelper.Get).ToList();
|
||||
return EntryManager.GetThirpartyFolders(parent).Select(r => FolderWrapperHelper.Get(r)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -489,13 +489,13 @@ namespace ASC.Files.Helpers
|
||||
public IEnumerable<FileWrapper<T>> GetFileVersionInfo(T fileId)
|
||||
{
|
||||
var files = FileStorageService.GetFileHistory(fileId);
|
||||
return files.Select(FileWrapperHelper.Get);
|
||||
return files.Select(r=> FileWrapperHelper.Get(r));
|
||||
}
|
||||
|
||||
public IEnumerable<FileWrapper<T>> ChangeHistory(T fileId, int version, bool continueVersion)
|
||||
{
|
||||
var history = FileStorageService.CompleteVersion(fileId, version, continueVersion).Value;
|
||||
return history.Select(FileWrapperHelper.Get);
|
||||
return history.Select(r=> FileWrapperHelper.Get(r));
|
||||
}
|
||||
|
||||
public FileWrapper<T> LockFile(T fileId, bool lockFile)
|
||||
|
@ -118,7 +118,7 @@ namespace ASC.Files.Service.Core
|
||||
.Where(f => f.Item1.RootFolderType != FolderType.TRASH && f.Item1.RootFolderType != FolderType.BUNCH)
|
||||
.ToList();
|
||||
|
||||
var folderIDs = files.Select(r => r.Item1.FolderID).ToArray();
|
||||
var folderIDs = files.Select(r => r.Item1.FolderID).ToList();
|
||||
var folders = FolderDao.GetFolders(folderIDs, checkShare: false);
|
||||
|
||||
return files.Select(f => new Tuple<Feed.Aggregator.Feed, object>(ToFeed(f, folders.FirstOrDefault(r => r.ID.Equals(f.Item1.FolderID))), f));
|
||||
|
@ -87,10 +87,10 @@ namespace ASC.Files.Service.Core
|
||||
.Where(f => f.Item1.RootFolderType != FolderType.TRASH && f.Item1.RootFolderType != FolderType.BUNCH)
|
||||
.ToList();
|
||||
|
||||
var parentFolderIDs = folders.Select(r => r.Item1.ParentFolderID).ToArray();
|
||||
var parentFolderIDs = folders.Select(r => r.Item1.FolderID).ToList();
|
||||
var parentFolders = FolderDao.GetFolders(parentFolderIDs, checkShare: false);
|
||||
|
||||
return folders.Select(f => new Tuple<Feed.Aggregator.Feed, object>(ToFeed(f, parentFolders.FirstOrDefault(r => r.ID.Equals(f.Item1.ParentFolderID))), f));
|
||||
return folders.Select(f => new Tuple<Feed.Aggregator.Feed, object>(ToFeed(f, parentFolders.FirstOrDefault(r => r.ID.Equals(f.Item1.FolderID))), f));
|
||||
}
|
||||
|
||||
private Feed.Aggregator.Feed ToFeed((Folder<int>, SmallShareRecord) tuple, Folder<int> rootFolder)
|
||||
@ -109,12 +109,12 @@ namespace ASC.Files.Service.Core
|
||||
Module = Name,
|
||||
Title = folder.Title,
|
||||
ExtraLocation = rootFolder.FolderType == FolderType.DEFAULT ? rootFolder.Title : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.ParentFolderID, false) : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.FolderID, false) : string.Empty,
|
||||
Keywords = string.Format("{0}", folder.Title),
|
||||
HasPreview = false,
|
||||
CanComment = false,
|
||||
Target = shareRecord.ShareTo,
|
||||
GroupId = GetGroupId(sharedFolderItem, shareRecord.ShareBy, folder.ParentFolderID.ToString())
|
||||
GroupId = GetGroupId(sharedFolderItem, shareRecord.ShareBy, folder.FolderID.ToString())
|
||||
};
|
||||
|
||||
return feed;
|
||||
@ -129,12 +129,12 @@ namespace ASC.Files.Service.Core
|
||||
Module = Name,
|
||||
Title = folder.Title,
|
||||
ExtraLocation = rootFolder.FolderType == FolderType.DEFAULT ? rootFolder.Title : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.ParentFolderID, false) : string.Empty,
|
||||
ExtraLocationUrl = rootFolder.FolderType == FolderType.DEFAULT ? FilesLinkUtility.GetFileRedirectPreviewUrl(folder.FolderID, false) : string.Empty,
|
||||
Keywords = string.Format("{0}", folder.Title),
|
||||
HasPreview = false,
|
||||
CanComment = false,
|
||||
Target = null,
|
||||
GroupId = GetGroupId(folderItem, folder.CreateBy, folder.ParentFolderID.ToString())
|
||||
GroupId = GetGroupId(folderItem, folder.CreateBy, folder.FolderID.ToString())
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ namespace ASC.Web.Api.Controllers
|
||||
[Scope]
|
||||
[DefaultRoute]
|
||||
[ApiController]
|
||||
[AllowAnonymous]
|
||||
public class AuthenticationController : ControllerBase
|
||||
{
|
||||
private UserManager UserManager { get; }
|
||||
@ -48,12 +47,21 @@ namespace ASC.Web.Api.Controllers
|
||||
EmailValidationKeyModelHelper = emailValidationKeyModelHelper;
|
||||
}
|
||||
|
||||
|
||||
[Read]
|
||||
public bool GetIsAuthentificated()
|
||||
{
|
||||
return SecurityContext.IsAuthenticated;
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create(false)]
|
||||
public AuthenticationTokenData AuthenticateMeFromBody([FromBody] AuthModel auth)
|
||||
{
|
||||
return AuthenticateMe(auth);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create(false)]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public AuthenticationTokenData AuthenticateMeFromForm([FromForm] AuthModel auth)
|
||||
@ -61,6 +69,28 @@ namespace ASC.Web.Api.Controllers
|
||||
return AuthenticateMe(auth);
|
||||
}
|
||||
|
||||
[Create("logout")]
|
||||
public void Logout()
|
||||
{
|
||||
CookiesManager.ClearCookies(CookiesType.AuthKey);
|
||||
CookiesManager.ClearCookies(CookiesType.SocketIO);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create("confirm", false)]
|
||||
public ValidationResult CheckConfirmFromBody([FromBody] EmailValidationKeyModel model)
|
||||
{
|
||||
return EmailValidationKeyModelHelper.Validate(model);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create("confirm", false)]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public ValidationResult CheckConfirmFromForm([FromForm] EmailValidationKeyModel model)
|
||||
{
|
||||
return EmailValidationKeyModelHelper.Validate(model);
|
||||
}
|
||||
|
||||
private AuthenticationTokenData AuthenticateMe(AuthModel auth)
|
||||
{
|
||||
var tenant = TenantManager.GetCurrentTenant();
|
||||
@ -84,28 +114,6 @@ namespace ASC.Web.Api.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
[Create("logout")]
|
||||
public void Logout()
|
||||
{
|
||||
CookiesManager.ClearCookies(CookiesType.AuthKey);
|
||||
CookiesManager.ClearCookies(CookiesType.SocketIO);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create("confirm", false)]
|
||||
public ValidationResult CheckConfirmFromBody([FromBody] EmailValidationKeyModel model)
|
||||
{
|
||||
return EmailValidationKeyModelHelper.Validate(model);
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
[Create("confirm", false)]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public ValidationResult CheckConfirmFromForm([FromForm] EmailValidationKeyModel model)
|
||||
{
|
||||
return EmailValidationKeyModelHelper.Validate(model);
|
||||
}
|
||||
|
||||
private UserInfo GetUser(int tenantId, AuthModel memberModel)
|
||||
{
|
||||
memberModel.PasswordHash = (memberModel.PasswordHash ?? "").Trim();
|
||||
|
@ -16,7 +16,7 @@ import {
|
||||
} from "asc-web-components";
|
||||
import PageLayout from "../../components/PageLayout";
|
||||
import { connect } from "react-redux";
|
||||
import styled from "styled-components";
|
||||
import styled, { css } from "styled-components";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import i18n from "./i18n";
|
||||
import ForgotPasswordModalDialog from "./sub-components/forgot-password-modal-dialog";
|
||||
@ -28,7 +28,6 @@ import {
|
||||
import { sendInstructionsToChangePassword } from "../../api/people";
|
||||
import Register from "./sub-components/register-container";
|
||||
import { createPasswordHash } from "../../utils";
|
||||
//import history from "../../history";
|
||||
import { redirectToDefaultPage } from "../../utils";
|
||||
const { getLanguage } = store.auth.selectors;
|
||||
const LoginContainer = styled.div`
|
||||
@ -126,9 +125,10 @@ const LoginContainer = styled.div`
|
||||
`;
|
||||
|
||||
const LoginFormWrapper = styled.div`
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
display: grid;
|
||||
grid-template-rows: ${props => props.enabledJoin ? css`1fr 66px` : css`1fr`};
|
||||
width: 100%;
|
||||
height: calc(100vh-56px);
|
||||
`;
|
||||
|
||||
class Form extends Component {
|
||||
@ -211,7 +211,7 @@ class Form extends Component {
|
||||
|
||||
onSubmit = () => {
|
||||
const { errorText, identifier, password } = this.state;
|
||||
const { login, setIsLoaded, history, hashSettings, homepage } = this.props;
|
||||
const { login, setIsLoaded, hashSettings } = this.props;
|
||||
|
||||
errorText && this.setState({ errorText: "" });
|
||||
let hasError = false;
|
||||
@ -440,7 +440,8 @@ class Form extends Component {
|
||||
Form.propTypes = {
|
||||
login: PropTypes.func.isRequired,
|
||||
match: PropTypes.object.isRequired,
|
||||
//history: PropTypes.object.isRequired,
|
||||
hashSettings: PropTypes.object,
|
||||
reloadPortalSettings: PropTypes.func,
|
||||
setIsLoaded: PropTypes.func.isRequired,
|
||||
greetingTitle: PropTypes.string.isRequired,
|
||||
t: PropTypes.func.isRequired,
|
||||
@ -460,25 +461,21 @@ Form.defaultProps = {
|
||||
const FormWrapper = withTranslation()(Form);
|
||||
|
||||
const LoginForm = (props) => {
|
||||
const { language, isLoaded } = props;
|
||||
const { language, enabledJoin } = props;
|
||||
|
||||
useEffect(() => {
|
||||
i18n.changeLanguage(language);
|
||||
}, [language]);
|
||||
|
||||
return (
|
||||
<>
|
||||
{isLoaded && (
|
||||
<LoginFormWrapper>
|
||||
<PageLayout>
|
||||
<PageLayout.SectionBody>
|
||||
<FormWrapper i18n={i18n} {...props} />
|
||||
</PageLayout.SectionBody>
|
||||
</PageLayout>
|
||||
<Register />
|
||||
</LoginFormWrapper>
|
||||
)}
|
||||
</>
|
||||
<LoginFormWrapper enabledJoin={enabledJoin}>
|
||||
<PageLayout>
|
||||
<PageLayout.SectionBody>
|
||||
<FormWrapper i18n={i18n} {...props} />
|
||||
</PageLayout.SectionBody>
|
||||
</PageLayout>
|
||||
<Register />
|
||||
</LoginFormWrapper>
|
||||
);
|
||||
};
|
||||
|
||||
@ -490,7 +487,7 @@ LoginForm.propTypes = {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
const { isLoaded, settings } = state.auth;
|
||||
const { greetingSettings, organizationName, hashSettings } = settings;
|
||||
const { greetingSettings, organizationName, hashSettings, enabledJoin } = settings;
|
||||
|
||||
return {
|
||||
isLoaded,
|
||||
@ -498,6 +495,7 @@ function mapStateToProps(state) {
|
||||
language: getLanguage(state),
|
||||
greetingTitle: greetingSettings,
|
||||
hashSettings,
|
||||
enabledJoin
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user