@@ -687,6 +735,7 @@ class Item extends React.Component {
{item.folder_name}
|
+ |
{moment(item.last_modified).fromNow()} |
{showDownloadIcon &&
@@ -743,6 +792,23 @@ class Item extends React.Component {
|
{item.file_name}
|
+
+ {(item.file_tags && item.file_tags.length > 0) && (
+
+
+ {item.file_tags.map((fileTag, index) => {
+ let length = item.file_tags.length;
+ return (
+
+ );
+ })}
+
+
+ {tagTitle}
+
+
+ )}
+ |
{Utils.bytesToSize(item.size)} |
{moment(item.last_modified).fromNow()} |
@@ -862,6 +928,176 @@ class GridItem extends React.Component {
}
}
+
+class RepoInfoBar extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ currentTag: null,
+ isListTaggedFileShow: false,
+ };
+ }
+
+ onListTaggedFiles = (currentTag) => {
+ this.setState({
+ currentTag: currentTag,
+ isListTaggedFileShow: !this.state.isListTaggedFileShow,
+ });
+ }
+
+ onCloseDialog = () => {
+ this.setState({
+ isListTaggedFileShow: false
+ });
+ }
+
+ render() {
+ let {repoID, currentPath, usedRepoTags} = this.props;
+ // let href = readmeMarkdown !== null ? siteRoot + 'lib/' + repoID + '/file' + Utils.joinPath(currentPath, readmeMarkdown.name) + '?mode=edit' : '';
+ // let filePath = readmeMarkdown !== null ? currentPath + readmeMarkdown.name : '';
+ return (
+
+ {usedRepoTags.length > 0 && (
+
+ {usedRepoTags.map((usedRepoTag) => {
+ return (
+ -
+
+ {usedRepoTag.name}
+
+
+ );
+ })}
+
+ )}
+ {this.state.isListTaggedFileShow && (
+
+
+
+ )}
+
+ );
+ }
+}
+
+
+class ListTaggedFilesDialog extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ taggedFileList: [],
+ };
+ }
+
+ componentDidMount() {
+ this.getTaggedFiles();
+ }
+
+ getTaggedFiles = () => {
+ let { repoID, currentTag } = this.props;
+ seafileAPI.getShareLinkTaggedFiles(token, currentTag.id).then(res => {
+ let taggedFileList = [];
+ res.data.tagged_files !== undefined &&
+ res.data.tagged_files.forEach(file => {
+ let taggedFile = file;
+ taggedFileList.push(taggedFile);
+ });
+ this.setState({
+ taggedFileList: taggedFileList,
+ });
+ }).catch(error => {
+ let errMessage = Utils.getErrorMsg(error);
+ toaster.danger(errMessage);
+ });
+ }
+
+ render() {
+ let taggedFileList = this.state.taggedFileList;
+ return (
+
+ {gettext('Tagged Files')}
+
+
+
+
+ {gettext('Name')} |
+ {gettext('Size')} |
+ {gettext('Last Update')} |
+
+
+
+ {taggedFileList.map((taggedFile, index) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+ );
+ }
+}
+
+class TaggedFile extends React.Component {
+
+ constructor(props) {
+ super(props);
+ this.state = ({
+ active: false,
+ });
+ }
+
+ onMouseEnter = () => {
+ this.setState({
+ active: true
+ });
+ }
+
+ onMouseLeave = () => {
+ this.setState({
+ active: false
+ });
+ }
+
+ render() {
+ const taggedFile = this.props.taggedFile;
+ let className = this.state.active ? 'action-icon sf2-icon-x3' : 'action-icon vh sf2-icon-x3';
+ let path = taggedFile.parent_path ? Utils.joinPath(taggedFile.parent_path, taggedFile.filename) : '';
+ let href = siteRoot + 'd/' + token + '/files/?p=' + Utils.encodePath(path);
+ return ( taggedFile.file_deleted ?
+ |