1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-11 11:51:27 +00:00

add dep admin transfer dep repo

This commit is contained in:
孙永强
2024-10-15 15:39:37 +08:00
committed by r350178982
parent a362b786a8
commit e0d48c9fff
9 changed files with 249 additions and 17 deletions

View File

@@ -15,12 +15,14 @@ import ResetEncryptedRepoPasswordDialog from '../../components/dialog/reset-encr
import LibOldFilesAutoDelDialog from '../../components/dialog/lib-old-files-auto-del-dialog';
import Rename from '../rename';
import { seafileAPI } from '../../utils/seafile-api';
import { userAPI } from '../../utils/user-api';
import LibHistorySettingDialog from '../dialog/lib-history-setting-dialog';
import toaster from '../toast';
import RepoAPITokenDialog from '../dialog/repo-api-token-dialog';
import RepoShareAdminDialog from '../dialog/repo-share-admin-dialog';
import RepoMonitoredIcon from '../../components/repo-monitored-icon';
import { GRID_MODE, LIST_MODE } from '../dir-view-mode/constants';
import TransferDialog from '../dialog/transfer-dialog';
dayjs.extend(relativeTime);
@@ -37,6 +39,7 @@ const propTypes = {
onItemDelete: PropTypes.func,
onMonitorRepo: PropTypes.func,
onContextMenu: PropTypes.func.isRequired,
onTransferRepo: PropTypes.func
};
class SharedRepoListItem extends React.Component {
@@ -55,6 +58,7 @@ class SharedRepoListItem extends React.Component {
isHistorySettingDialogShow: false,
isDeleteDialogShow: false,
isAPITokenDialogShow: false,
isTransferDialogShow: false,
isRepoShareAdminDialogOpen: false,
isRepoDeleted: false,
isChangePasswordDialogShow: false,
@@ -166,6 +170,9 @@ class SharedRepoListItem extends React.Component {
case 'Rename':
this.onItemRenameToggle();
break;
case 'Transfer':
this.onTransferToggle();
break;
case 'Folder Permission':
this.onItemFolderPermissionToggle();
break;
@@ -231,6 +238,33 @@ class SharedRepoListItem extends React.Component {
});
};
onTransferToggle = () => {
this.setState({ isTransferDialogShow: !this.state.isTransferDialogShow });
};
onTransferRepo = (user) => {
let repoID = this.props.repo.repo_id;
let groupID = this.props.currentGroup.id;
let email = null;
if (Array.isArray(user)) {
email = user[0].email;
} else {
email = user.email;
}
userAPI.depAdminTransferRepo(repoID, groupID, email).then(res => {
this.props.onTransferRepo(repoID, groupID, email);
let message = gettext('Successfully transferred the library.');
toaster.success(message);
}).catch(error => {
if (error.response) {
toaster.danger(error.response.data.error_msg || gettext('Error'), { duration: 3 });
} else {
toaster.danger(gettext('Failed. Please check the network.'), { duration: 3 });
}
});
this.onTransferToggle();
};
onRenameConfirm = (name) => {
this.props.onItemRename(this.props.repo, name);
this.onRenameCancel();
@@ -322,6 +356,9 @@ class SharedRepoListItem extends React.Component {
case 'Rename':
translateResult = gettext('Rename');
break;
case 'Transfer':
translateResult = gettext('Transfer');
break;
case 'Folder Permission':
translateResult = gettext('Folder Permission');
break;
@@ -389,7 +426,7 @@ class SharedRepoListItem extends React.Component {
if (isStaff) {
if (repo.owner_email == currentGroup.id + '@seafile_group') {
this.isDeparementOnwerGroupMember = true;
operations = ['Rename'];
operations = ['Rename', 'Transfer'];
if (folderPermEnabled) {
operations.push('Folder Permission');
}
@@ -822,6 +859,17 @@ class SharedRepoListItem extends React.Component {
/>
</ModalPortal>
)}
{this.state.isTransferDialogShow && (
<ModalPortal>
<TransferDialog
itemName={repo.repo_name}
submit={this.onTransferRepo}
canTransferToDept={true}
toggleDialog={this.onTransferToggle}
isDepAdminTransfer={true}
/>
</ModalPortal>
)}
</Fragment>
);
}