1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 07:41:26 +00:00

optimized path check method (#2846)

This commit is contained in:
杨顺强
2019-01-17 16:33:27 +08:00
committed by Daniel Pan
parent c21fdf8ebf
commit 4444a4120a
3 changed files with 38 additions and 90 deletions

View File

@@ -383,11 +383,11 @@ class Wiki extends Component {
onLinkClick = (link) => {
const url = link;
if (this.isInternalMarkdownLink(url)) {
let path = this.getPathFromInternalMarkdownLink(url);
if (Utils.isInternalMarkdownLink(url, repoID)) {
let path = Utils.getPathFromInternalMarkdownLink(url, repoID);
this.showFile(path);
} else if (this.isInternalDirLink(url)) {
let path = this.getPathFromInternalDirLink(url);
} else if (Utils.isInternalDirLink(url, repoID)) {
let path = Utils.getPathFromInternalDirLink(url, repoID, slug);
this.showDir(path);
} else {
window.open(url);
@@ -411,7 +411,7 @@ class Wiki extends Component {
onpopstate = (event) => {
if (event.state && event.state.path) {
let path = event.state.path;
if (this.isMarkdownFile(path)) {
if (Utils.isMarkdownFile(path)) {
this.showFile(path);
} else {
this.loadDirentList(path);
@@ -878,45 +878,6 @@ class Wiki extends Component {
return dirent;
}
isMarkdownFile(filePath) {
let index = filePath.lastIndexOf('.');
if (index === -1) {
return false;
} else {
let type = filePath.substring(index).toLowerCase();
if (type === '.md' || type === '.markdown') {
return true;
} else {
return false;
}
}
}
isInternalMarkdownLink(url) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '.*\.md$');
return re.test(url);
}
isInternalDirLink(url) {
var re = new RegExp(siteRoot + 'library/' + repoID + '.*');
return re.test(url);
}
getPathFromInternalMarkdownLink(url) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '/file' + '(.*\.md)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
}
getPathFromInternalDirLink(url) {
var re = new RegExp(siteRoot + 'library/' + repoID + '/' + slug + '(/.*)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
}
getSelectedDirentPaths = () => {
let paths = [];
this.state.selectedDirentList.forEach(selectedDirent => {
@@ -977,7 +938,8 @@ class Wiki extends Component {
if (libNeedDecrypt) {
return (
<ModalPortal>
<LibDecryptDialog repoID={repoID}
<LibDecryptDialog
repoID={repoID}
onLibDecryptDialog={this.onLibDecryptDialog}
/>
</ModalPortal>

View File

@@ -1,4 +1,4 @@
import { mediaUrl, gettext } from './constants';
import { mediaUrl, gettext, siteRoot } from './constants';
import { strChineseFirstPY } from './pinyin-by-unicode';
export const Utils = {
@@ -389,6 +389,31 @@ export const Utils = {
}
},
isInternalMarkdownLink: function(url, repoID) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '.*\.md$');
return re.test(url);
},
isInternalDirLink: function(url, repoID) {
var re = new RegExp(siteRoot + 'library/' + repoID + '.*');
return re.test(url);
},
getPathFromInternalMarkdownLink: function(url, repoID) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '/file' + '(.*\.md)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
},
getPathFromInternalDirLink: function(url, repoID, repoName) {
var re = new RegExp(siteRoot + 'library/' + repoID + '/' + repoName + '(/.*)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
},
compareTwoWord: function(wordA, wordB) {
// compare wordA and wordB at lower case
// if wordA >= wordB, return 1

View File

@@ -119,11 +119,11 @@ class Wiki extends Component {
onLinkClick = (link) => {
const url = link;
if (this.isInternalMarkdownLink(url)) {
let path = this.getPathFromInternalMarkdownLink(url);
if (Utils.isInternalMarkdownLink(url, repoID)) {
let path = Utils.getPathFromInternalMarkdownLink(url, repoID);
this.initMainPanelData(path);
} else if (this.isInternalDirLink(url)) {
let path = this.getPathFromInternalDirLink(url);
} else if (Utils.isInternalDirLink(url, repoID)) {
let path = Utils.getPathFromInternalDirLink(url, repoID, slug);
this.initWikiData(path);
} else {
window.location.href = url;
@@ -453,45 +453,6 @@ class Wiki extends Component {
return false;
}
isMarkdownFile(filePath) {
let index = filePath.lastIndexOf('.');
if (index === -1) {
return false;
} else {
let type = filePath.substring(index).toLowerCase();
if (type === '.md' || type === '.markdown') {
return true;
} else {
return false;
}
}
}
isInternalMarkdownLink(url) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '.*\.md$');
return re.test(url);
}
isInternalDirLink(url) {
var re = new RegExp(siteRoot + 'library/' + repoID + '.*');
return re.test(url);
}
getPathFromInternalMarkdownLink(url) {
var re = new RegExp(siteRoot + 'lib/' + repoID + '/file' + '(.*\.md)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
}
getPathFromInternalDirLink(url) {
var re = new RegExp(siteRoot + 'library/' + repoID + '/' + slug + '(.*)');
var array = re.exec(url);
var path = decodeURIComponent(array[1]);
return path;
}
render() {
return (
<div id="main" className="wiki-main">