Merge branch 'feature/rtl-interface-direction' of github.com:ONLYOFFICE/DocSpace into feature/rtl-interface-direction
This commit is contained in:
commit
4c8f0da014
@ -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));
|
||||
|
@ -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"]);
|
||||
}
|
||||
|
@ -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`
|
||||
|
@ -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(
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user