Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

12.0 change add existing file in wiki edit #6057

Merged
merged 11 commits into from
May 15, 2024
1 change: 1 addition & 0 deletions frontend/config/webpack.entry.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const entryFiles = {
TCAccept: '/tc-accept.js',
TCView: '/tc-view.js',
wiki: '/wiki.js',
wiki2: '/wiki2.js',
fileHistory: '/file-history.js',
fileHistoryOld: '/file-history-old.js',
sdocFileHistory: '/pages/sdoc/sdoc-file-history/index.js',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,34 +1,27 @@
import React from 'react';
import PropTypes from 'prop-types';
import { gettext } from '../../utils/constants';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input } from 'reactstrap';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input, Label } from 'reactstrap';

const propTypes = {
toggleCancel: PropTypes.func.isRequired,
addWiki: PropTypes.func.isRequired,
};

class NewWikiDialog extends React.Component {
class AddWikiDialog extends React.Component {

constructor(props) {
super(props);
this.state = {
isExist: false,
name: '',
repoID: '',
isSubmitBtnActive: false,
};
}

inputNewName = (e) => {
if (!event.target.value.trim()) {
this.setState({isSubmitBtnActive: false});
} else {
this.setState({isSubmitBtnActive: true});
}

this.setState({
name: e.target.value,
isSubmitBtnActive: !!e.target.value.trim(),
});
};

Expand All @@ -39,8 +32,9 @@ class NewWikiDialog extends React.Component {
};

handleSubmit = () => {
let { isExist, name, repoID } = this.state;
this.props.addWiki(isExist, name, repoID);
const wikiName = this.state.name.trim();
if (!wikiName) return;
this.props.addWiki(wikiName);
this.props.toggleCancel();
};

Expand All @@ -51,9 +45,9 @@ class NewWikiDialog extends React.Component {
render() {
return (
<Modal isOpen={true} autoFocus={false} toggle={this.toggle}>
<ModalHeader toggle={this.toggle}>{gettext('New Wiki')}</ModalHeader>
<ModalHeader toggle={this.toggle}>{gettext('Add Wiki')}</ModalHeader>
<ModalBody>
<label className="form-label">{gettext('Name')}</label>
<Label>{gettext('Name')}</Label>
<Input onKeyDown={this.handleKeyDown} autoFocus={true} value={this.state.name} onChange={this.inputNewName}/>
</ModalBody>
<ModalFooter>
Expand All @@ -65,6 +59,6 @@ class NewWikiDialog extends React.Component {
}
}

NewWikiDialog.propTypes = propTypes;
AddWikiDialog.propTypes = propTypes;

export default NewWikiDialog;
export default AddWikiDialog;
110 changes: 0 additions & 110 deletions frontend/src/components/dialog/wiki-select-dialog.js

This file was deleted.

91 changes: 8 additions & 83 deletions frontend/src/components/wiki-list-view/wiki-list-item.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,13 @@ import React, { Component } from 'react';
import { Dropdown, DropdownToggle, DropdownItem } from 'reactstrap';
import PropTypes from 'prop-types';
import moment from 'moment';
import { siteRoot, gettext, username } from '../../utils/constants';
import { siteRoot, gettext } from '../../utils/constants';
import { Utils } from '../../utils/utils';
// import { seafileAPI } from '../../utils/seafile-api';
// import Toast from '../toast';
import ModalPortal from '../modal-portal';
import WikiDeleteDialog from '../dialog/wiki-delete-dialog';
// import Rename from '../rename';

const propTypes = {
wiki: PropTypes.object.isRequired,
// renameWiki: PropTypes.func.isRequired,
deleteWiki: PropTypes.func.isRequired,
isItemFreezed: PropTypes.bool.isRequired,
onFreezedItem: PropTypes.func.isRequired,
Expand All @@ -25,9 +21,7 @@ class WikiListItem extends Component {
this.state = {
isOpMenuOpen: false, // for mobile
isShowDeleteDialog: false,
// isRenameing: false,
highlight: false,
// permission: this.props.wiki.permission,
};
}

Expand All @@ -37,30 +31,6 @@ class WikiListItem extends Component {
});
};

// clickMenuToggle = (e) => {
// e.preventDefault();
// this.onMenuToggle(e);
// }

// onMenuToggle = (e) => {
// let targetType = e.target.dataset.toggle;
// if (targetType !== 'item') {
// if (this.props.isItemFreezed) {
// this.setState({
// highlight: false,
// isShowMenuControl: false,
// isShowWikiMenu: !this.state.isShowWikiMenu
// });
// this.props.onUnfreezedItem();
// } else {
// this.setState({
// isShowWikiMenu: !this.state.isShowWikiMenu
// });
// this.props.onFreezedItem();
// }
// }
// }

onMouseEnter = () => {
if (!this.props.isItemFreezed) {
this.setState({ highlight: true });
Expand All @@ -73,37 +43,6 @@ class WikiListItem extends Component {
}
};

// changePerm = (permission) => {
// let wiki = this.props.wiki;
// seafileAPI.updateWikiPermission(wiki.slug, permission).then(() => {
// this.setState({permission: permission});
// }).catch((error) => {
// if(error.response) {
// let errorMsg = error.response.data.error_msg;
// Toast.danger(errorMsg);
// }
// });
// }

// onRenameToggle = (e) => {
// this.props.onFreezedItem();
// this.setState({
// isShowWikiMenu: false,
// isShowMenuControl: false,
// isRenameing: true,
// });
// }

// onRenameConfirm = (newName) => {
// this.renameWiki(newName);
// this.onRenameCancel();
// }

// onRenameCancel = () => {
// this.props.onUnfreezedItem();
// this.setState({isRenameing: false});
// }

onDeleteToggle = (e) => {
e.preventDefault();
this.props.onUnfreezedItem();
Expand All @@ -119,11 +58,6 @@ class WikiListItem extends Component {
});
};

// renameWiki = (newName) => {
// let wiki = this.props.wiki;
// this.props.renameWiki(wiki, newName);
// }

deleteWiki = () => {
let wiki = this.props.wiki;
this.props.deleteWiki(wiki);
Expand All @@ -136,7 +70,9 @@ class WikiListItem extends Component {
let wiki = this.props.wiki;
let userProfileURL = `${siteRoot}profile/${encodeURIComponent(wiki.owner)}/`;
let fileIconUrl = Utils.getDefaultLibIconUrl(false);
const isWikiOwner = wiki.owner === username;
let isOldVersion = wiki.version !== 'v2';
let publishedUrl = `${siteRoot}published/${encodeURIComponent(wiki.slug)}/`;
let editUrl = `${siteRoot}edit-wiki/${wiki.id}/`;

const desktopItem = (
<tr
Expand All @@ -147,24 +83,12 @@ class WikiListItem extends Component {
>
<td><img src={fileIconUrl} width="24" alt="" /></td>
<td className="name">
<a href={wiki.link}>{wiki.name}</a>
{/*this.state.isRenameing ?
<Rename wiki={wiki} name={wiki.name} onRenameConfirm={this.onRenameConfirm} onRenameCancel={this.onRenameCancel}/> :
<a href={wiki.link}>{wiki.name}</a>
*/}
{isOldVersion && <a href={publishedUrl}>{wiki.name} (old version)</a>}
{!isOldVersion && <a href={editUrl}>{wiki.name}</a>}
</td>
<td><a href={userProfileURL} target='_blank' rel="noreferrer">{wiki.owner_nickname}</a></td>
<td>{moment(wiki.updated_at).fromNow()}</td>
<td className="text-center cursor-pointer align-top">
{isWikiOwner &&
<span
className={`iconfont icon-edit mr-4 action-icon ${this.state.highlight ? '' : 'invisible'}`}
onClick={() => window.open(wiki.link.replace('/published/', '/edit-wiki/'))}
title={gettext('Edit')}
aria-label={gettext('Edit')}
style={{color: '#999', fontSize: '20px'}}
></span>
}
<a
href="#"
role="button"
Expand All @@ -181,7 +105,8 @@ class WikiListItem extends Component {
<tr>
<td><img src={fileIconUrl} width="24" alt="" /></td>
<td>
<a href={wiki.link}>{wiki.name}</a><br />
{isOldVersion && <a href={publishedUrl}>{wiki.name} (old version)</a>}
{!isOldVersion && <a href={editUrl}>{wiki.name}</a>}<br />
<a href={userProfileURL} target='_blank' className="item-meta-info" rel="noreferrer">{wiki.owner_nickname}</a>
<span className="item-meta-info">{moment(wiki.updated_at).fromNow()}</span>
</td>
Expand Down
2 changes: 0 additions & 2 deletions frontend/src/components/wiki-list-view/wiki-list-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import LibsMobileThead from '../libs-mobile-thead';

const propTypes = {
data: PropTypes.object.isRequired,
renameWiki: PropTypes.func.isRequired,
deleteWiki: PropTypes.func.isRequired,
};

Expand Down Expand Up @@ -57,7 +56,6 @@ class WikiListView extends Component {
<WikiListItem
key={index}
wiki={wiki}
renameWiki={this.props.renameWiki}
deleteWiki={this.props.deleteWiki}
isItemFreezed={this.state.isItemFreezed}
onFreezedItem={this.onFreezedItem}
Expand Down
Loading
Loading