mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-28 08:06:56 +00:00
update sdoc version and sdoc translate
This commit is contained in:
@@ -11,6 +11,7 @@ import toaster from '../../components/toast';
|
||||
import SidePanel from './side-panel';
|
||||
import MainPanel from './main-panel';
|
||||
import PageUtils from './view-structure/page-utils';
|
||||
import LocalStorage from '../../utils/local-storage-utils';
|
||||
|
||||
import '../../css/layout.css';
|
||||
import '../../css/side-panel.css';
|
||||
@@ -37,6 +38,7 @@ class Wiki extends Component {
|
||||
repoId: '',
|
||||
seadoc_access_token: '',
|
||||
assets_url: '',
|
||||
wikiRepoId: null,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -56,14 +58,19 @@ class Wiki extends Component {
|
||||
|
||||
getWikiConfig = () => {
|
||||
wikiAPI.getWiki2Config(wikiId).then(res => {
|
||||
const { wiki_config, repo_id } = res.data.wiki;
|
||||
const { wiki_config, repo_id, id: wikiRepoId } = res.data.wiki;
|
||||
const config = new WikiConfig(wiki_config || {});
|
||||
this.setState({
|
||||
config,
|
||||
isConfigLoading: false,
|
||||
repoId: repo_id,
|
||||
wikiRepoId,
|
||||
}, () => {
|
||||
const pageId = this.getFirstPageId(config);
|
||||
let pageId = this.getFirstPageId(config);
|
||||
// opened by url
|
||||
const urlSearchParams = new URLSearchParams(location.search);
|
||||
const urlPageId = urlSearchParams.get('page_id');
|
||||
if (urlPageId) pageId = urlPageId;
|
||||
if (pageId) {
|
||||
this.setCurrentPage(pageId);
|
||||
}
|
||||
@@ -151,6 +158,27 @@ class Wiki extends Component {
|
||||
window.history.pushState({ url: fileUrl, path: filePath }, filePath, fileUrl);
|
||||
};
|
||||
|
||||
cacheHistoryFiles = (docUuid, name, pageId) => {
|
||||
let arr = [];
|
||||
const { wikiRepoId } = this.state; // different from repoId
|
||||
const recentFiles = LocalStorage.getItem('wiki-recent-files', []);
|
||||
const newFile = { doc_uuid: docUuid, name: name, wikiRepoId, pageId };
|
||||
if (recentFiles.length) {
|
||||
const isExist = recentFiles.find((item) => item.doc_uuid === docUuid);
|
||||
if (isExist) return;
|
||||
if (!isExist) {
|
||||
let newRecentFiles = recentFiles.slice(0);
|
||||
if (recentFiles.length === 10) {
|
||||
newRecentFiles.shift();
|
||||
}
|
||||
arr = [newFile, ...newRecentFiles];
|
||||
}
|
||||
} else {
|
||||
arr.push(newFile);
|
||||
}
|
||||
LocalStorage.setItem('wiki-recent-files', arr);
|
||||
};
|
||||
|
||||
setCurrentPage = (pageId, callback) => {
|
||||
const { currentPageId, config } = this.state;
|
||||
if (pageId === currentPageId) {
|
||||
@@ -159,10 +187,8 @@ class Wiki extends Component {
|
||||
}
|
||||
const { pages } = config;
|
||||
const currentPage = PageUtils.getPageById(pages, pageId);
|
||||
const path = currentPage.path;
|
||||
if (path !== this.state.path) {
|
||||
this.showPage(pageId, path);
|
||||
}
|
||||
const { path, id, name, docUuid } = currentPage;
|
||||
if (path !== this.state.path) this.showPage(pageId, path);
|
||||
this.onCloseSide();
|
||||
this.setState({
|
||||
currentPageId: pageId,
|
||||
@@ -170,6 +196,7 @@ class Wiki extends Component {
|
||||
}, () => {
|
||||
callback && callback();
|
||||
});
|
||||
this.cacheHistoryFiles(docUuid,name,id);
|
||||
};
|
||||
|
||||
onUpdatePage = (pageId, newPage) => {
|
||||
|
@@ -8,7 +8,6 @@ import { Utils } from '../../utils/utils';
|
||||
import Account from '../../components/common/account';
|
||||
import WikiTopNav from './top-nav';
|
||||
import { getCurrentPageConfig } from './utils';
|
||||
import WikiExternalOperations from './wiki-external-operations';
|
||||
|
||||
const propTypes = {
|
||||
path: PropTypes.string.isRequired,
|
||||
|
51
frontend/src/utils/local-storage-utils.js
Normal file
51
frontend/src/utils/local-storage-utils.js
Normal file
@@ -0,0 +1,51 @@
|
||||
class LocalStorage {
|
||||
|
||||
static setItem(key, value) {
|
||||
let savedValue;
|
||||
const valueType = typeof value;
|
||||
if (valueType === 'string') {
|
||||
savedValue = value;
|
||||
} else if (valueType === 'number') {
|
||||
savedValue = value + '';
|
||||
} else {
|
||||
savedValue = JSON.stringify(value);
|
||||
}
|
||||
return window.localStorage.setItem(key, savedValue);
|
||||
}
|
||||
|
||||
static getItem(key, defaultValue) {
|
||||
const value = window.localStorage.getItem(key);
|
||||
try {
|
||||
return JSON.parse(value) || defaultValue;
|
||||
} catch {
|
||||
return value || defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
static removeItem(key) {
|
||||
return window.localStorage.removeItem(key);
|
||||
}
|
||||
|
||||
// The setExpire and getExpire methods used to satisfy some cases that need to be updated regularly
|
||||
static setExpire(key, value, expire) {
|
||||
let obj = {
|
||||
data: value,
|
||||
time: Date.now(),
|
||||
expire: expire
|
||||
};
|
||||
this.setItem(key, JSON.stringify(obj));
|
||||
}
|
||||
|
||||
static getExpire(key) {
|
||||
let val = this.getItem(key);
|
||||
if (!val) return val;
|
||||
val = JSON.parse(val);
|
||||
if (Date.now() - val.time > val.expire) {
|
||||
this.removeItem(key);
|
||||
return null;
|
||||
}
|
||||
return val.data;
|
||||
}
|
||||
}
|
||||
|
||||
export default LocalStorage;
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Vytvořit",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Erstellen",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Create",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Crear",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Créer",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Recent visited",
|
||||
"The_document_does_not_exist": "The document does not exist",
|
||||
"Create_a_new_sdoc_file": "Create a new sdoc file",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Crea",
|
||||
"Top_align": "Top",
|
||||
"Center_align": "Middle",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "Недавно посещенные",
|
||||
"The_document_does_not_exist": "Документ не существует",
|
||||
"Create_a_new_sdoc_file": "Создать новый файл sdoc",
|
||||
"Create_a_new_wiki_page": "Create a new wiki page",
|
||||
"New_page": "New page",
|
||||
"Create": "Создать",
|
||||
"Top_align": "Верх",
|
||||
"Center_align": "Середина",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "最近浏览",
|
||||
"The_document_does_not_exist": "不存在该文档",
|
||||
"Create_a_new_sdoc_file": "新建 sdoc 文件",
|
||||
"Create_a_new_wiki_page": "创建一个 Wiki 页面",
|
||||
"New_page": "新建页面",
|
||||
"Create": "创建",
|
||||
"Top_align": "顶端对齐",
|
||||
"Center_align": "居中对齐",
|
||||
|
@@ -445,7 +445,7 @@
|
||||
"Recent_visited": "最近浏览",
|
||||
"The_document_does_not_exist": "不存在该文档",
|
||||
"Create_a_new_sdoc_file": "新建 sdoc 文件",
|
||||
"Create_a_new_wiki_page": "创建一个 Wiki 页面",
|
||||
"New_page": "新建页面",
|
||||
"Create": "创建",
|
||||
"Top_align": "顶端对齐",
|
||||
"Center_align": "居中对齐",
|
||||
|
Reference in New Issue
Block a user