Skip to content
This repository has been archived by the owner on Jun 3, 2024. It is now read-only.

Commit

Permalink
移除主题路径的必填项检查,优化设置页面的提示
Browse files Browse the repository at this point in the history
  • Loading branch information
Yimien committed Feb 2, 2024
1 parent 2b940c9 commit 815680e
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 55 deletions.
30 changes: 15 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,23 @@

### 配置说明

- 校验按钮:检验 Memos 服务器是否能够访问以及 Access Token 是否有效。
- 服务器地址:访问 Memos 的网页路径,填写时记得去除最后的 `/`
- 授权码:在 `Memos` -> `设置` -> `我的账号` 页面可以看到 Access Tokens。
- 上次同步时间:在同步结束后会自动更新。插件在获取 Memos 数据时,会截取 `上次同步时间``当前时间` 之间的未归档数据,因此如果有特殊需求可自行修改。
- 同步方案:
- **校验按钮**:检验 Memos 服务器是否能够访问以及 Access Token 是否有效。
- **服务器地址**:访问 Memos 的网页路径,填写时记得去除最后的 `/`
- **授权码**:在 `Memos` -> `设置` -> `我的账号` 页面可以看到 Access Tokens。
- **上次同步时间**:在同步结束后会自动更新。插件在获取 Memos 数据时,会截取 `上次同步时间``当前时间` 之间的未归档数据,因此如果有特殊需求可自行修改。
- **同步方案**
- 第一种:同步至 Daily Notes,插件会自动获取指定笔记本下的日记模板路径,然后将对应日期的数据保存到对应日期的文档中,若没有对应日期的文档,插件会自动创建。(注意:选择本方案时,如果你在 Memos 更新了以前同步过的数据,在插件同步时,会自动删除原先的内容块,同时将新数据写入更新日期对应的文档中)。
- 第二种:同步至笔记本或文档下,插件会根据 `笔记本``文档路径` 两个配置结合生成保存路径,保存的文件会以 `日期` `时间` `Memos的id` 的格式进行命名。
- 第三种:同步至单份文档中,插件会根据 `笔记本``文档路径` 两个配置结合生成保存路径,**此时文档路径必填**
- 笔记本:配置保存 Memos 的数据在哪个笔记本。
- 文档路径:第一种同步方案时无效,其余均生效。不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。
- 引用处理方案:以引用块或者嵌入块的形式保存 Memos 的引用。
- 图片块布局:将资源中的图片单独提取为一块,允许自由选择图片的排列模式。
- 是否识别双向链接符号:若为``,插件会自动识别双向链接符号(()),并在同步时自动关联至对应的文档块,若被关联的文档块不存在则会自动创建。
- 主题路径:用于保存自动创建的文档,不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。
- 是否增加上级标签:若为``,插件在同步时会将来自Memos的标签统一保存在自定义的标签下。
- 标签名称:用于收束来自 Memos 的标签。
- 资源下载模式:当第一种资源下载模式失效时,请选择第二种模式。
- 第三种:同步至单份文档中,插件会根据 `笔记本``文档路径` 两个配置结合生成保存路径,并将所有的数据保存至一份文档中
- **笔记本**:配置保存 Memos 的数据在哪个笔记本。
- **文档路径**:第一种同步方案时无效,其余均生效。不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。**请注意:当同步至单份文档中时,此项必填。**
- **引用处理方案**:以引用块或者嵌入块的形式保存 Memos 的引用。
- **图片块布局**:将资源中的图片单独提取为一块,允许自由选择图片的排列模式。
- **是否识别双向链接符号**:若为``,插件会自动识别双向链接符号(()),并在同步时自动关联至对应的文档块,若被关联的文档块不存在则会自动创建。
- **主题路径**:用于保存自动创建的文档,不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。
- **是否增加上级标签**:若为``,插件在同步时会将来自Memos的标签统一保存在自定义的标签下。
- **标签名称**:用于收束来自 Memos 的标签。**请注意:当需要增加上级标签时,此项必填。**
- **资源下载模式**:当第一种资源下载模式失效时,请选择第二种模式。

### 特别感谢

Expand Down
33 changes: 22 additions & 11 deletions README_zh_CN.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@

# Memos 同步插件

### 功能介绍

> 将 Memos 的数据同步到思源笔记。[<< 更新日志](https://github.com/Yimien/plugin-memos-sync/blob/main/CHANGELOG.md)
1. 支持将 Memos 中的数据同步到思源笔记,包括文本、图片、标签、引用等。
2. 支持保存到 Daily Notes 或者指定的笔记本或文档下
2. 支持保存到 Daily Notes、指定的笔记本或文档下、单份文档中
3. 支持将 Memos 的引用保存为引用块或者嵌入块。
4. 支持识别双向链接。
5. 支持将 Memos 的标签保存在同一标签下。

### 使用说明

Expand All @@ -16,16 +19,23 @@

### 配置说明

- 校验按钮:检验能否访问 Memos 以及 Access Token 是否有效。
- 服务器地址:访问 Memos 的网页路径,填写时记得去除最后的 ``/``
- 授权码:在 `Memos` -> `设置` -> `我的账号` 页面可以看到 Access Tokens。
- 上次同步时间:在同步结束后会自动更新。插件在获取 Memos 数据时,获取 `上次同步时间``当前时间` 的所有数据,因此如果有特殊需求可自行修改。
- 同步方案:有两种,一种是同步至 Daily Notes ,另一种是保存到指定的笔记本或文档下。
- 当选择同步至 Daily Notes 时,插件会自动获取指定笔记本下的日记模板路径,然后将对应日期的数据保存到对应日期的文档中,若没有对应日期的文档,插件会自动创建。(注意:选择本方案时,如果你在 Memos 更新了以前同步过的数据,在插件同步时,会自动删除原先的内容块,同时将新数据写入更新日期对应的文档中)。
- 当选择同步至指定笔记本或文档下时,会根据 `笔记本``文档路径` 两个配置结合判断保存路径,保存的文件会以 日期 时间 Memos的id 进行命名。
- 笔记本:配置保存 Memos 的数据在哪个笔记本。
- 文档路径:仅在同步方案为 `同步至指定笔记本或文档` 时有效,不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test 就代表着将数据保存到 名称为test 的文档下。
- 引用处理方案:以引用块或者嵌入块的形式保存 Memos 的引用。
- **校验按钮**:检验 Memos 服务器是否能够访问以及 Access Token 是否有效。
- **服务器地址**:访问 Memos 的网页路径,填写时记得去除最后的 `/`
- **授权码**:在 `Memos` -> `设置` -> `我的账号` 页面可以看到 Access Tokens。
- **上次同步时间**:在同步结束后会自动更新。插件在获取 Memos 数据时,会截取 `上次同步时间``当前时间` 之间的未归档数据,因此如果有特殊需求可自行修改。
- **同步方案**
- 第一种:同步至 Daily Notes,插件会自动获取指定笔记本下的日记模板路径,然后将对应日期的数据保存到对应日期的文档中,若没有对应日期的文档,插件会自动创建。(注意:选择本方案时,如果你在 Memos 更新了以前同步过的数据,在插件同步时,会自动删除原先的内容块,同时将新数据写入更新日期对应的文档中)。
- 第二种:同步至笔记本或文档下,插件会根据 `笔记本``文档路径` 两个配置结合生成保存路径,保存的文件会以 `日期` `时间` `Memos的id` 的格式进行命名。
- 第三种:同步至单份文档中,插件会根据 `笔记本``文档路径` 两个配置结合生成保存路径,并将所有的数据保存至一份文档中。
- **笔记本**:配置保存 Memos 的数据在哪个笔记本。
- **文档路径**:第一种同步方案时无效,其余均生效。不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。**请注意:当同步至单份文档中时,此项必填。**
- **引用处理方案**:以引用块或者嵌入块的形式保存 Memos 的引用。
- **图片块布局**:将资源中的图片单独提取为一块,允许自由选择图片的排列模式。
- **是否识别双向链接符号**:若为``,插件会自动识别双向链接符号(()),并在同步时自动关联至对应的文档块,若被关联的文档块不存在则会自动创建。
- **主题路径**:用于保存自动创建的文档,不填写则会将数据直接保存在笔记本下,如果需要填写时,以 `/` 开头进行填写。例如:/test。
- **是否增加上级标签**:若为``,插件在同步时会将来自Memos的标签统一保存在自定义的标签下。
- **标签名称**:用于收束来自 Memos 的标签。**请注意:当需要增加上级标签时,此项必填。**
- **资源下载模式**:当第一种资源下载模式失效时,请选择第二种模式。

### 特别感谢

Expand All @@ -36,3 +46,4 @@
用上 Memos 和思源后,就一直希望能两个服务的数据打通,但可惜的是一直没有相关的插件出来,最后没办法就自己写了,只不过第一次写插件,再加上是不熟悉的语言,着实耗费一段时间,所幸结果是好的。

但是在这里还是要声明一下,本插件纯粹是以我自身的喜好进行开发,对于个性化的需求可能无法满足。当然,如果你遇有 Bug 或者说有更好的想法、建议也欢迎到 Github 或者 链滴 提出,我会不定时地查看,至于是否修改那就另当别论了。

58 changes: 29 additions & 29 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export default class MemosSync extends Plugin {
async checkRequired() {
let configData = this.data[STORAGE_NAME];

// TODO 必填项补充
// 必填项
let requiredList = [
configData.baseUrl, // 基础路径
configData.accessToken, // 授权码
Expand All @@ -91,26 +91,26 @@ export default class MemosSync extends Plugin {
// 同步至单份文档时,需校验文档路径是否填写
if (configData.syncMode === sMaps.SYNC_MAP.simple){
if (!configData.pagePath){
await sApi.pushErrMsg("请确认必填项是否全部配置!")
await sApi.pushErrMsg("请检查设置必填项是否全部配置!")
return;
}
}

// 收束标签时,需校验标签名称是否填写
if (configData.superLabelMode === sMaps.IS_USE.yes) {
if (!configData.superLabelText) {
await sApi.pushErrMsg("请确认必填项是否全部配置!")
await sApi.pushErrMsg("请检查设置必填项是否全部配置!")
return false;
}
}

// 识别双向链接时,需校验主题路径是否填写
if (configData.biDirectionalLinksMode === sMaps.IS_USE.yes){
if (!configData.subjectPath){
await sApi.pushErrMsg("请确认必填项是否全部配置!")
return false;
}
}
// if (configData.biDirectionalLinksMode === sMaps.IS_USE.yes){
// if (!configData.subjectPath){
// await sApi.pushErrMsg("请确认必填项是否全部配置!")
// return false;
// }
// }

return true;
}
Expand Down Expand Up @@ -1418,12 +1418,12 @@ export default class MemosSync extends Plugin {
}

// 识别双向链接时,需校验主题路径是否填写
if (biDirectionalLinksModeElement.value === sMaps.IS_USE.yes){
if (!subjectPathElement.value){
await sApi.pushErrMsg("请确认必填项是否全部配置!")
return;
}
}
// if (biDirectionalLinksModeElement.value === sMaps.IS_USE.yes){
// if (!subjectPathElement.value){
// await sApi.pushErrMsg("请确认必填项是否全部配置!")
// return;
// }
// }

// 保存设置数据
let configData = this.data[STORAGE_NAME];
Expand Down Expand Up @@ -1467,7 +1467,7 @@ export default class MemosSync extends Plugin {

// 添加基础路径输入框
this.setting.addItem({
title: "服务器地址 <code class='fn__code'><font color='red'>必填项</font></code>",
title: "服务器地址 <font color='red'>*</font>",
description: "允许使用域名或者IP地址,地址最后不要保留 '/'",
createActionElement: () => {
baseUrlElement.className = "b3-text-field fn__size350 fn__flex-center";
Expand All @@ -1478,7 +1478,7 @@ export default class MemosSync extends Plugin {

// 添加授权码输入框
this.setting.addItem({
title: "授权码 <code class='fn__code'><font color='red'>必填项</font></code>",
title: "授权码 <font color='red'>*</font>",
description: "请在设置页面获取 Access Token",
createActionElement: () => {
accessTokenElement.className = "b3-text-field fn__size350 fn__flex-center";
Expand All @@ -1489,7 +1489,7 @@ export default class MemosSync extends Plugin {

// 添加上次同步时间输入框
this.setting.addItem({
title: "上次同步时间 <code class='fn__code'><font color='red'>必填项</font></code>",
title: "上次同步时间 <font color='red'>*</font>",
description: `同步完成后会自动更新,如有特殊需要可以手动修改`,
createActionElement: () => {
lastSyncTimeElement.className = "b3-text-field fn__size200 fn__flex-center fn__block";
Expand All @@ -1500,7 +1500,7 @@ export default class MemosSync extends Plugin {

// 添加同步方案下拉框
this.setting.addItem({
title: "同步方案 <code class='fn__code'><font color='red'>必填项</font></code>",
title: "同步方案 <font color='red'>*</font>",
description: "1. 同步至 Daily Notes:需要配置笔记本,文档路径无效<br>2. 同步至笔记本或文档下:需要配置笔记本,如需保存至指定文档下需要配置文档路径<br>3. 同步至单个文档中:需要配置笔记本和文档路径",
createActionElement: () => {
syncModeElement = document.createElement('select')
Expand Down Expand Up @@ -1533,7 +1533,7 @@ export default class MemosSync extends Plugin {
// 添加笔记本下拉框
this.nowNotebooks = await this.getNotebooks();
this.setting.addItem({
title: "笔记本 <code class='fn__code'><font color='red'>必填项</font></code>",
title: "同步笔记本 <font color='red'>*</font>",
description: "选择保存的笔记本",
createActionElement: () => {
notebookIdElement = document.createElement('select')
Expand All @@ -1553,7 +1553,7 @@ export default class MemosSync extends Plugin {
// 添加文档路径输入框
this.setting.addItem({
title: "文档路径",
description: "如需保存至指定文档下,请以'/'开头进行填写",
description: "如需保存至指定文档下,请以'/'开头进行填写<br><font color='red'>请注意:当同步至单份文档中时,此项必填</fonts>",
createActionElement: () => {
pagePathElement.className = "b3-text-field fn__size200 fn__flex-center";
pagePathElement.value = this.data[STORAGE_NAME].pagePath;
Expand All @@ -1563,7 +1563,7 @@ export default class MemosSync extends Plugin {

// 添加引用处理方案下拉框
this.setting.addItem({
title: "引用处理方案",
title: "引用处理方案 <font color='red'>*</font>",
description: "Memos的引用在思源的保存方案处理",
createActionElement: () => {
markModeElement = document.createElement('select')
Expand Down Expand Up @@ -1591,7 +1591,7 @@ export default class MemosSync extends Plugin {

// 图片布局处理方案
this.setting.addItem({
title: "图片块布局",
title: "图片块布局 <font color='red'>*</font>",
description: "Memos的图片在思源的保存方案处理",
createActionElement: () => {
imageLayoutElement = document.createElement('select')
Expand Down Expand Up @@ -1619,8 +1619,8 @@ export default class MemosSync extends Plugin {

// 识别双链符号控件
this.setting.addItem({
title: "是否识别双向链接符号",
description: "识别双向链接符号并自动关联文档<br><font color='red'>请注意:只支持文档块的匹配</fonts>",
title: "是否识别双向链接符号 <font color='red'>*</font>",
description: "识别双向链接符号并自动关联文档<br><font color='blue'>请注意:只支持文档块的匹配</fonts>",
createActionElement: () => {
biDirectionalLinksModeElement = document.createElement('select')
biDirectionalLinksModeElement.className = "b3-select fn__flex-center fn__size200";
Expand Down Expand Up @@ -1648,7 +1648,7 @@ export default class MemosSync extends Plugin {
// 主题路径
this.setting.addItem({
title: "主题路径",
description: "保存自动创建的主题文档路径,请以'/'开头进行填写",
description: "配置保存识别双向链接时自动创建的文档路径,请以'/'开头进行填写<br><font color='blue'>请注意:若本项为空,则自动创建的文档会直接保存在同步笔记本下</fonts>",
createActionElement: () => {
subjectPathElement.className = "b3-text-field fn__size200 fn__flex-center";
subjectPathElement.value = this.data[STORAGE_NAME].subjectPath;
Expand All @@ -1658,7 +1658,7 @@ export default class MemosSync extends Plugin {

// 是否使用上级标签
this.setting.addItem({
title: "是否增加上级标签",
title: "是否增加上级标签 <font color='red'>*</font>",
description: "为所有的标签增加一个上级标签",
createActionElement: () => {
superLabelModeElement = document.createElement('select')
Expand Down Expand Up @@ -1687,7 +1687,7 @@ export default class MemosSync extends Plugin {
// 上级标签输入框
this.setting.addItem({
title: "标签名称",
description: "设置上级标签名称,请确认标签开头和结尾没有'/'",
description: "设置上级标签名称,请确认标签开头和结尾没有'/'<br><font color='red'>请注意:当需要增加上级标签时,此项必填</fonts>",
createActionElement: () => {
superLabelTextElement.className = "b3-text-field fn__size200 fn__flex-center";
superLabelTextElement.value = this.data[STORAGE_NAME].superLabelText;
Expand All @@ -1697,7 +1697,7 @@ export default class MemosSync extends Plugin {

// 资源下载方式
this.setting.addItem({
title: "资源下载模式",
title: "资源下载模式 <font color='red'>*</font>",
description: "当资源无法正确显示或下载时请选择使用第二种模式",
createActionElement: () => {
resourceDownloadModeElement = document.createElement('select')
Expand Down

0 comments on commit 815680e

Please sign in to comment.