mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-02 23:48:47 +00:00
Merge pull request #6904 from haiwen/dep-repo-transfer
Department admin transfer depRepo
This commit is contained in:
@@ -28,6 +28,8 @@ const propTypes = {
|
||||
canTransferToDept: PropTypes.bool,
|
||||
isOrgAdmin: PropTypes.bool,
|
||||
isSysAdmin: PropTypes.bool,
|
||||
isDepAdminTransfer: PropTypes.bool,
|
||||
|
||||
};
|
||||
|
||||
const TRANS_USER = 'transUser';
|
||||
@@ -41,7 +43,7 @@ class TransferDialog extends React.Component {
|
||||
errorMsg: [],
|
||||
transferToUser: true,
|
||||
transferToGroup: false,
|
||||
activeTab: TRANS_USER
|
||||
activeTab: !this.props.isDepAdminTransfer ? TRANS_USER : TRANS_DEPART
|
||||
};
|
||||
this.options = [];
|
||||
}
|
||||
@@ -131,16 +133,18 @@ class TransferDialog extends React.Component {
|
||||
<Fragment>
|
||||
<div className="transfer-dialog-side">
|
||||
<Nav pills>
|
||||
<NavItem role="tab" aria-selected={activeTab === TRANS_USER} aria-controls="transfer-user-panel">
|
||||
<NavLink
|
||||
className={activeTab === TRANS_USER ? 'active' : ''}
|
||||
onClick={(this.toggle.bind(this, TRANS_USER))}
|
||||
tabIndex="0"
|
||||
onKeyDown={this.onTabKeyDown}
|
||||
>
|
||||
{gettext('Transfer to user')}
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
{!this.props.isDepAdminTransfer &&
|
||||
<NavItem role="tab" aria-selected={activeTab === TRANS_USER} aria-controls="transfer-user-panel">
|
||||
<NavLink
|
||||
className={activeTab === TRANS_USER ? 'active' : ''}
|
||||
onClick={(this.toggle.bind(this, TRANS_USER))}
|
||||
tabIndex="0"
|
||||
onKeyDown={this.onTabKeyDown}
|
||||
>
|
||||
{gettext('Transfer to user')}
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
}
|
||||
{isPro &&
|
||||
<NavItem role="tab" aria-selected={activeTab === TRANS_DEPART} aria-controls="transfer-depart-panel">
|
||||
<NavLink
|
||||
|
@@ -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,27 @@ 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;
|
||||
userAPI.depAdminTransferRepo(repoID, groupID, user.email).then(res => {
|
||||
this.props.onTransferRepo(repoID, groupID, user.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 +350,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 +420,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 +853,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>
|
||||
);
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ const propTypes = {
|
||||
onMonitorRepo: PropTypes.func,
|
||||
theadHidden: PropTypes.bool,
|
||||
inAllLibs: PropTypes.bool,
|
||||
onTransferRepo: PropTypes.func,
|
||||
};
|
||||
|
||||
class SharedRepoListView extends React.Component {
|
||||
@@ -131,6 +132,7 @@ class SharedRepoListView extends React.Component {
|
||||
isItemFreezed={this.state.isItemFreezed}
|
||||
onFreezedItem={this.onFreezedItem}
|
||||
onUnfreezedItem={this.onUnfreezedItem}
|
||||
onTransferRepo={this.props.onTransferRepo}
|
||||
onItemUnshare={this.props.onItemUnshare}
|
||||
onItemDelete={this.props.onItemDelete}
|
||||
onItemRename={this.props.onItemRename}
|
||||
|
Reference in New Issue
Block a user