mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-17 15:53:28 +00:00
optimized path check method (#2846)
This commit is contained in:
@@ -383,11 +383,11 @@ class Wiki extends Component {
|
|||||||
|
|
||||||
onLinkClick = (link) => {
|
onLinkClick = (link) => {
|
||||||
const url = link;
|
const url = link;
|
||||||
if (this.isInternalMarkdownLink(url)) {
|
if (Utils.isInternalMarkdownLink(url, repoID)) {
|
||||||
let path = this.getPathFromInternalMarkdownLink(url);
|
let path = Utils.getPathFromInternalMarkdownLink(url, repoID);
|
||||||
this.showFile(path);
|
this.showFile(path);
|
||||||
} else if (this.isInternalDirLink(url)) {
|
} else if (Utils.isInternalDirLink(url, repoID)) {
|
||||||
let path = this.getPathFromInternalDirLink(url);
|
let path = Utils.getPathFromInternalDirLink(url, repoID, slug);
|
||||||
this.showDir(path);
|
this.showDir(path);
|
||||||
} else {
|
} else {
|
||||||
window.open(url);
|
window.open(url);
|
||||||
@@ -411,7 +411,7 @@ class Wiki extends Component {
|
|||||||
onpopstate = (event) => {
|
onpopstate = (event) => {
|
||||||
if (event.state && event.state.path) {
|
if (event.state && event.state.path) {
|
||||||
let path = event.state.path;
|
let path = event.state.path;
|
||||||
if (this.isMarkdownFile(path)) {
|
if (Utils.isMarkdownFile(path)) {
|
||||||
this.showFile(path);
|
this.showFile(path);
|
||||||
} else {
|
} else {
|
||||||
this.loadDirentList(path);
|
this.loadDirentList(path);
|
||||||
@@ -878,45 +878,6 @@ class Wiki extends Component {
|
|||||||
return dirent;
|
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 = () => {
|
getSelectedDirentPaths = () => {
|
||||||
let paths = [];
|
let paths = [];
|
||||||
this.state.selectedDirentList.forEach(selectedDirent => {
|
this.state.selectedDirentList.forEach(selectedDirent => {
|
||||||
@@ -977,7 +938,8 @@ class Wiki extends Component {
|
|||||||
if (libNeedDecrypt) {
|
if (libNeedDecrypt) {
|
||||||
return (
|
return (
|
||||||
<ModalPortal>
|
<ModalPortal>
|
||||||
<LibDecryptDialog repoID={repoID}
|
<LibDecryptDialog
|
||||||
|
repoID={repoID}
|
||||||
onLibDecryptDialog={this.onLibDecryptDialog}
|
onLibDecryptDialog={this.onLibDecryptDialog}
|
||||||
/>
|
/>
|
||||||
</ModalPortal>
|
</ModalPortal>
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { mediaUrl, gettext } from './constants';
|
import { mediaUrl, gettext, siteRoot } from './constants';
|
||||||
import { strChineseFirstPY } from './pinyin-by-unicode';
|
import { strChineseFirstPY } from './pinyin-by-unicode';
|
||||||
|
|
||||||
export const Utils = {
|
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) {
|
compareTwoWord: function(wordA, wordB) {
|
||||||
// compare wordA and wordB at lower case
|
// compare wordA and wordB at lower case
|
||||||
// if wordA >= wordB, return 1
|
// if wordA >= wordB, return 1
|
||||||
|
@@ -119,11 +119,11 @@ class Wiki extends Component {
|
|||||||
|
|
||||||
onLinkClick = (link) => {
|
onLinkClick = (link) => {
|
||||||
const url = link;
|
const url = link;
|
||||||
if (this.isInternalMarkdownLink(url)) {
|
if (Utils.isInternalMarkdownLink(url, repoID)) {
|
||||||
let path = this.getPathFromInternalMarkdownLink(url);
|
let path = Utils.getPathFromInternalMarkdownLink(url, repoID);
|
||||||
this.initMainPanelData(path);
|
this.initMainPanelData(path);
|
||||||
} else if (this.isInternalDirLink(url)) {
|
} else if (Utils.isInternalDirLink(url, repoID)) {
|
||||||
let path = this.getPathFromInternalDirLink(url);
|
let path = Utils.getPathFromInternalDirLink(url, repoID, slug);
|
||||||
this.initWikiData(path);
|
this.initWikiData(path);
|
||||||
} else {
|
} else {
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
@@ -453,45 +453,6 @@ class Wiki extends Component {
|
|||||||
return false;
|
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() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div id="main" className="wiki-main">
|
<div id="main" className="wiki-main">
|
||||||
|
Reference in New Issue
Block a user