diff --git a/frontend/src/pages/sys-admin/repos/trash-repos.js b/frontend/src/pages/sys-admin/repos/trash-repos.js
index 609dfdcdbd..1323890e0d 100644
--- a/frontend/src/pages/sys-admin/repos/trash-repos.js
+++ b/frontend/src/pages/sys-admin/repos/trash-repos.js
@@ -9,6 +9,7 @@ import EmptyTip from '../../../components/empty-tip';
import Loading from '../../../components/loading';
import Paginator from '../../../components/paginator';
import ModalPortal from '../../../components/modal-portal';
+import OpMenu from '../../../components/dialog/op-menu';
import CommonOperationConfirmationDialog from '../../../components/dialog/common-operation-confirmation-dialog';
import MainPanelTopbar from '../main-panel-topbar';
import Search from '../search';
@@ -21,6 +22,17 @@ class Content extends Component {
constructor(props) {
super(props);
+ this.state = {
+ isItemFreezed: false
+ };
+ }
+
+ onFreezedItem = () => {
+ this.setState({isItemFreezed: true});
+ }
+
+ onUnfreezedItem = () => {
+ this.setState({isItemFreezed: false});
}
getPreviousPageList = () => {
@@ -50,10 +62,10 @@ class Content extends Component {
{/*icon*/} |
- {gettext('Name')} |
- {gettext('Owner')} |
+ {gettext('Name')} |
+ {gettext('Owner')} |
{gettext('Deleted Time')} |
- {/*Operations*/} |
+ {/*Operations*/} |
@@ -61,6 +73,9 @@ class Content extends Component {
return ( );
@@ -89,12 +104,39 @@ class Item extends Component {
constructor(props) {
super(props);
this.state = {
+ highlight: false,
isOpIconShown: false,
isDeleteRepoDialogOpen: false,
isRestoreRepoDialogOpen: false
};
}
+ handleMouseOver = () => {
+ if (!this.props.isItemFreezed) {
+ this.setState({
+ isOpIconShown: true,
+ highlight: true
+ });
+ }
+ }
+
+ handleMouseOut = () => {
+ if (!this.props.isItemFreezed) {
+ this.setState({
+ isOpIconShown: false,
+ highlight: false
+ });
+ }
+ }
+
+ onUnfreezedItem = () => {
+ this.setState({
+ highlight: false,
+ isOpIconShow: false
+ });
+ this.props.onUnfreezedItem();
+ }
+
onDeleteRepo = () => {
const repo = this.props.repo;
seafileAPI.sysAdminDeleteTrashRepo(repo.id).then((res) => {
@@ -119,18 +161,6 @@ class Item extends Component {
});
}
- handleMouseOver = () => {
- this.setState({
- isOpIconShown: true
- });
- }
-
- handleMouseOut = () => {
- this.setState({
- isOpIconShown: false
- });
- }
-
toggleDeleteRepoDialog = (e) => {
if (e) {
e.preventDefault();
@@ -145,6 +175,35 @@ class Item extends Component {
this.setState({isRestoreRepoDialogOpen: !this.state.isRestoreRepoDialogOpen});
}
+ translateOperations = (item) => {
+ let translateResult = '';
+ switch(item) {
+ case 'Restore':
+ translateResult = gettext('Restore');
+ break;
+ case 'Delete':
+ translateResult = gettext('Delete');
+ break;
+ default:
+ break;
+ }
+
+ return translateResult;
+ }
+
+ onMenuItemClick = (operation) => {
+ switch(operation) {
+ case 'Restore':
+ this.toggleRestoreRepoDialog();
+ break;
+ case 'Delete':
+ this.toggleDeleteRepoDialog();
+ break;
+ default:
+ break;
+ }
+ }
+
render () {
const { repo } = this.props;
const { isOpIconShown, isDeleteRepoDialogOpen, isRestoreRepoDialogOpen } = this.state;
@@ -165,10 +224,13 @@ class Item extends Component {
{moment(repo.delete_time).fromNow()} |
{isOpIconShown && (
-
-
-
-
+
)}
|