Merge branch 'feature/rtl-interface-direction' of github.com:ONLYOFFICE/DocSpace into feature/rtl-interface-direction

This commit is contained in:
Subhonbek 2023-07-18 14:52:23 +03:00
commit 4c8f0da014
5 changed files with 36 additions and 25 deletions

View File

@ -45,7 +45,7 @@ class SectionBodyContent extends React.Component {
this.setState({
isRestoreProcess: restoring,
}),
100
100,
);
} else {
clearTimeout(this.timerId);
@ -113,8 +113,7 @@ class SectionBodyContent extends React.Component {
itemSize={this.getSize}
itemCount={versions.length}
itemData={versions}
outerElementType={CustomScrollbarsVirtualList}
>
outerElementType={CustomScrollbarsVirtualList}>
{this.renderRow}
</List>
</StyledVersionList>
@ -138,9 +137,8 @@ class SectionBodyContent extends React.Component {
}
export default inject(({ auth, versionHistoryStore, clientLoadingStore }) => {
const { setFirstLoad, isLoading } = clientLoadingStore;
const { versions, fetchFileVersions, fileId, fileSecurity } =
versionHistoryStore;
const { setFirstLoad, isLoading, setIsSectionBodyLoading } = clientLoadingStore;
const { versions, fetchFileVersions, fileId, fileSecurity } = versionHistoryStore;
return {
culture: auth.settingsStore.culture,
@ -149,7 +147,7 @@ export default inject(({ auth, versionHistoryStore, clientLoadingStore }) => {
fileId,
fileSecurity,
setFirstLoad,
setIsLoading,
setIsLoading: setIsSectionBodyLoading,
fetchFileVersions,
};
})(observer(SectionBodyContent));

View File

@ -1641,6 +1641,7 @@ class FilesStore {
const canCopy = item.security?.Copy;
const canDuplicate = item.security?.Duplicate;
const canDownload = item.security?.Download;
if (isFile) {
const shouldFillForm = item.viewAccessability.WebRestrictedEditing;
@ -1700,6 +1701,10 @@ class FilesStore {
"delete",
];
if (!canDownload) {
fileOptions = this.removeOptions(fileOptions, ["download"]);
}
if (!isPdf || !window.DocSpaceConfig.pdfViewer) {
fileOptions = this.removeOptions(fileOptions, ["pdf-view"]);
}
@ -1909,6 +1914,7 @@ class FilesStore {
"mute-room",
"unmute-room",
"separator1",
"download",
"archive-room",
"unarchive-room",
"delete",
@ -1936,8 +1942,11 @@ class FilesStore {
roomOptions = this.removeOptions(roomOptions, ["delete"]);
}
if (!canArchiveRoom && !canRemoveRoom) {
roomOptions = this.removeOptions(roomOptions, ["separator1"]);
if (!canDownload) {
roomOptions = this.removeOptions(roomOptions, [
"separator1",
"download",
]);
}
if (!item.providerKey) {
@ -2015,6 +2024,10 @@ class FilesStore {
"delete",
];
if (!canDownload) {
folderOptions = this.removeOptions(folderOptions, ["download"]);
}
if (!canRenameItem) {
folderOptions = this.removeOptions(folderOptions, ["rename"]);
}

View File

@ -162,11 +162,11 @@ const StyledDropdownItem = styled.div`
.submenu-arrow {
${(props) =>
props.theme.interfaceDirection == "rtl"
props.theme.interfaceDirection === "rtl"
? `margin-right: auto;
transform: rotate(180deg);
transform: scaleX(-1);
`
: `margin-left: auto`}
: `margin-left: auto;`}
${(props) =>
props.isActive &&
css`

View File

@ -111,8 +111,8 @@ internal abstract class SecurityBaseDao<T> : AbstractDao
{
folders.Add(entryId);
}
filesDbContext.Security.RemoveRange(await Queries.ForSetShareAsync(filesDbContext, r, folders, FileEntryType.Folder).ToListAsync());
var forSetShare = await Queries.ForSetShareAsync(filesDbContext, r.TenantId, r.Subject, folders, FileEntryType.Folder).ToListAsync();
filesDbContext.Security.RemoveRange(forSetShare);
}
else
{
@ -121,7 +121,7 @@ internal abstract class SecurityBaseDao<T> : AbstractDao
if (files.Count > 0)
{
filesDbContext.Security.RemoveRange(await Queries.ForSetShareAsync(filesDbContext, r, files, FileEntryType.File).ToListAsync());
filesDbContext.Security.RemoveRange(await Queries.ForSetShareAsync(filesDbContext, r.TenantId, r.Subject, files, FileEntryType.File).ToListAsync());
}
await filesDbContext.SaveChangesAsync();
@ -494,14 +494,14 @@ static file class Queries
.Select(r => r.Id.ToString()));
public static readonly
Func<FilesDbContext, FileShareRecord, List<string>, FileEntryType, IAsyncEnumerable<DbFilesSecurity>>
Func<FilesDbContext, int, Guid, IEnumerable<string>, FileEntryType, IAsyncEnumerable<DbFilesSecurity>>
ForSetShareAsync = Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
(FilesDbContext ctx, FileShareRecord record, List<string> entryIds, FileEntryType type) =>
(FilesDbContext ctx, int tenantId, Guid subject, IEnumerable<string> entryIds, FileEntryType type) =>
ctx.Security
.Where(a => a.TenantId == record.TenantId &&
.Where(a => a.TenantId == tenantId &&
entryIds.Contains(a.EntryId) &&
a.EntryType == type &&
a.Subject == record.Subject));
a.Subject == subject));
public static readonly Func<FilesDbContext, int, string, FileEntryType, Task<bool>> IsSharedAsync =
Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(

View File

@ -96,7 +96,7 @@ public class FileSharingAceHelper
throw new ArgumentNullException(FilesCommonResource.ErrorMassage_BadRequest);
}
if (!await _fileSharingHelper.CanSetAccessAsync(entry) && advancedSettings is not { InvitationLink: true })
if (!aceWrappers.All(r => r.Id == _authContext.CurrentAccount.ID && r.Access == FileShare.None) && !await _fileSharingHelper.CanSetAccessAsync(entry) && advancedSettings is not { InvitationLink: true })
{
throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException);
}
@ -160,7 +160,7 @@ public class FileSharingAceHelper
{
await _countPaidUserChecker.CheckAppend();
}
userType = FileSecurity.GetTypeByShare(w.Access);
if (!emailInvite && currentUserType != EmployeeType.DocSpaceAdmin)
@ -506,7 +506,7 @@ public class FileSharing
{
continue;
}
if (r.Subject == FileConstant.ShareLinkId)
{
linkAccess = r.Share;
@ -559,8 +559,8 @@ public class FileSharing
if (isRoom && r.IsLink)
{
w.Link = r.SubjectType == SubjectType.InvitationLink ?
_invitationLinkService.GetInvitationLink(r.Subject, _authContext.CurrentAccount.ID) :
w.Link = r.SubjectType == SubjectType.InvitationLink ?
_invitationLinkService.GetInvitationLink(r.Subject, _authContext.CurrentAccount.ID) :
await _externalShare.GetLinkAsync(r.Subject);
w.SubjectGroup = true;
w.CanEditAccess = false;
@ -689,7 +689,7 @@ public class FileSharing
return result;
}
public async Task<List<AceWrapper>> GetSharedInfoAsync<T>(IEnumerable<T> fileIds, IEnumerable<T> folderIds, IEnumerable<SubjectType> subjectTypes = null,
public async Task<List<AceWrapper>> GetSharedInfoAsync<T>(IEnumerable<T> fileIds, IEnumerable<T> folderIds, IEnumerable<SubjectType> subjectTypes = null,
bool withoutTemplates = false)
{
if (!_authContext.IsAuthenticated)