Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
411cf0a239
10 changed files with 100 additions and 27 deletions
50
API.md
50
API.md
|
@ -19,6 +19,8 @@
|
|||
* [Move documents](#Move-documents)
|
||||
* [Get human-readable path based on path](#Get-human-readable-path-based-on-path)
|
||||
* [Get human-readable path based on ID](#Get-human-readable-path-based-on-ID)
|
||||
* [Get storage path based on ID](#Get-storage-path-based-on-ID)
|
||||
* [Get IDs based on human-readable path](#Get-IDs-based-on-human-readable-path)
|
||||
* [Assets](#Assets)
|
||||
* [Upload assets](#Upload-assets)
|
||||
* [Blocks](#Blocks)
|
||||
|
@ -70,8 +72,7 @@
|
|||
|
||||
* Endpoint: `http://127.0.0.1:6806`
|
||||
* Both are POST methods
|
||||
* An interface with parameters is required, the parameter is a JSON string, placed in the body, and the header
|
||||
Content-Type is `application/json`
|
||||
* An interface with parameters is required, the parameter is a JSON string, placed in the body, and the header Content-Type is `application/json`
|
||||
* Return value
|
||||
|
||||
````json
|
||||
|
@ -326,8 +327,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
```
|
||||
|
||||
* `notebook`: Notebook ID
|
||||
* `path`: Document path, which needs to start with / and separate levels with / (path here corresponds to the
|
||||
database hpath field)
|
||||
* `path`: Document path, which needs to start with / and separate levels with / (path here corresponds to the database hpath field)
|
||||
* `markdown`: GFM Markdown content
|
||||
* Return value
|
||||
|
||||
|
@ -462,6 +462,28 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
"data": "/foo/bar"
|
||||
}
|
||||
```
|
||||
|
||||
### Get storage path based on ID
|
||||
|
||||
* `/api/filetree/getPathByID`
|
||||
* Parameters
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "20210917220056-yxtyl7i"
|
||||
}
|
||||
```
|
||||
|
||||
* `id`: Block ID
|
||||
* Return value
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"data": "/20210828150719-r8edxl2/20210917220056-yxtyl7i.sy"
|
||||
}
|
||||
```
|
||||
|
||||
### Get IDs based on human-readable path
|
||||
|
||||
|
@ -500,9 +522,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
* `"/assets/"`: workspace/data/assets/ folder
|
||||
* `"/assets/sub/"`: workspace/data/assets/sub/ folder
|
||||
|
||||
Under normal circumstances, it is recommended to use the first method, which is stored in the assets folder
|
||||
of the workspace, putting in a subdirectory has some side effects, please refer to the assets chapter of the user
|
||||
guide.
|
||||
Under normal circumstances, it is recommended to use the first method, which is stored in the assets folder of the workspace, putting in a subdirectory has some side effects, please refer to the assets chapter of the user guide.
|
||||
* `file[]`: Uploaded file list
|
||||
* Return value
|
||||
|
||||
|
@ -520,9 +540,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
```
|
||||
|
||||
* `errFiles`: List of filenames with errors in upload processing
|
||||
* `succMap`: For successfully processed files, the key is the file name when uploading, and the value is
|
||||
assets/foo-id.png, which is used to replace the asset link address in the existing Markdown content with the
|
||||
uploaded address
|
||||
* `succMap`: For successfully processed files, the key is the file name when uploading, and the value is assets/foo-id.png, which is used to replace the asset link address in the existing Markdown content with the uploaded address
|
||||
|
||||
## Blocks
|
||||
|
||||
|
@ -547,8 +565,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
* `previousID`: The ID of the previous block, used to anchor the insertion position
|
||||
* `parentID`: The ID of the parent block, used to anchor the insertion position
|
||||
|
||||
`nextID`, `previousID`, and `parentID` must have at least one value, using
|
||||
priority: `nextID` > `previousID` > `parentID`
|
||||
`nextID`, `previousID`, and `parentID` must have at least one value, using priority: `nextID` > `previousID` > `parentID`
|
||||
* Return value
|
||||
|
||||
```json
|
||||
|
@ -755,8 +772,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
|
||||
* `id`: Block ID to move
|
||||
* `previousID`: The ID of the previous block, used to anchor the insertion position
|
||||
* `parentID`: The ID of the parent block, used to anchor the insertion position, `previousID` and `parentID` cannot
|
||||
be empty at the same time, if they exist at the same time, `previousID` will be used first
|
||||
* `parentID`: The ID of the parent block, used to anchor the insertion position, `previousID` and `parentID` cannot be empty at the same time, if they exist at the same time, `previousID` will be used first
|
||||
* Return value
|
||||
|
||||
```json
|
||||
|
@ -1302,8 +1318,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
"timeout": 7000
|
||||
}
|
||||
```
|
||||
* `timeout`: The duration of the message display in milliseconds. This field can be omitted, the default is 7000
|
||||
milliseconds
|
||||
* `timeout`: The duration of the message display in milliseconds. This field can be omitted, the default is 7000 milliseconds
|
||||
* Return value
|
||||
|
||||
```json
|
||||
|
@ -1328,8 +1343,7 @@ View API token in <kbd>Settings - About</kbd>, request header: `Authorization: T
|
|||
"timeout": 7000
|
||||
}
|
||||
```
|
||||
* `timeout`: The duration of the message display in milliseconds. This field can be omitted, the default is 7000
|
||||
milliseconds
|
||||
* `timeout`: The duration of the message display in milliseconds. This field can be omitted, the default is 7000 milliseconds
|
||||
* Return value
|
||||
|
||||
```json
|
||||
|
|
23
API_zh_CN.md
23
API_zh_CN.md
|
@ -19,6 +19,7 @@
|
|||
* [移动文档](#移动文档)
|
||||
* [根据路径获取人类可读路径](#根据路径获取人类可读路径)
|
||||
* [根据 ID 获取人类可读路径](#根据-ID-获取人类可读路径)
|
||||
* [根据 ID 获取存储路径](#根据-ID-获取存储路径)
|
||||
* [根据人类可读路径获取 IDs](#根据人类可读路径获取-IDs)
|
||||
* [资源文件](#资源文件)
|
||||
* [上传资源文件](#上传资源文件)
|
||||
|
@ -462,6 +463,28 @@
|
|||
}
|
||||
```
|
||||
|
||||
### 根据 ID 获取存储路径
|
||||
|
||||
* `/api/filetree/getPathByID`
|
||||
* 参数
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "20210917220056-yxtyl7i"
|
||||
}
|
||||
```
|
||||
|
||||
* `id`:块 ID
|
||||
* 返回值
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"data": "/20210828150719-r8edxl2/20210917220056-yxtyl7i.sy"
|
||||
}
|
||||
```
|
||||
|
||||
### 根据人类可读路径获取 IDs
|
||||
|
||||
* `/api/filetree/getIDsByHPath`
|
||||
|
|
|
@ -135,7 +135,8 @@ export const lineNumberRender = (block: HTMLElement) => {
|
|||
lineList.map((line) => {
|
||||
let lineHeight = "";
|
||||
if (isWrap) {
|
||||
lineNumberTemp.textContent = line || "<br>";
|
||||
// windows 下空格高度为 0 https://github.com/siyuan-note/siyuan/issues/12346
|
||||
lineNumberTemp.textContent = line.trim() || "<br>";
|
||||
// 不能使用 lineNumberTemp.getBoundingClientRect().height.toFixed(1) 否则
|
||||
// windows 需等待字体下载完成再计算,否则导致不换行,高度计算错误
|
||||
// https://github.com/siyuan-note/siyuan/issues/9029
|
||||
|
|
|
@ -364,6 +364,29 @@ func getHPathByID(c *gin.Context) {
|
|||
ret.Data = hPath
|
||||
}
|
||||
|
||||
func getPathByID(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
id := arg["id"].(string)
|
||||
if util.InvalidIDPattern(id, ret) {
|
||||
return
|
||||
}
|
||||
|
||||
_path, err := model.GetPathByID(id)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
return
|
||||
}
|
||||
ret.Data = _path
|
||||
}
|
||||
|
||||
func getFullHPathByID(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
|
|
@ -106,6 +106,7 @@ func ServeAPI(ginServer *gin.Engine) {
|
|||
ginServer.Handle("POST", "/api/filetree/getHPathByPath", model.CheckAuth, getHPathByPath)
|
||||
ginServer.Handle("POST", "/api/filetree/getHPathsByPaths", model.CheckAuth, getHPathsByPaths)
|
||||
ginServer.Handle("POST", "/api/filetree/getHPathByID", model.CheckAuth, getHPathByID)
|
||||
ginServer.Handle("POST", "/api/filetree/getPathByID", model.CheckAuth, getPathByID)
|
||||
ginServer.Handle("POST", "/api/filetree/getFullHPathByID", model.CheckAuth, getFullHPathByID)
|
||||
ginServer.Handle("POST", "/api/filetree/getIDsByHPath", model.CheckAuth, getIDsByHPath)
|
||||
ginServer.Handle("POST", "/api/filetree/doc2Heading", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, doc2Heading)
|
||||
|
|
|
@ -19,7 +19,8 @@ package conf
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/open-spaced-repetition/go-fsrs"
|
||||
|
||||
"github.com/open-spaced-repetition/go-fsrs/v2"
|
||||
)
|
||||
|
||||
type Flashcard struct {
|
||||
|
|
|
@ -46,7 +46,7 @@ require (
|
|||
github.com/mitchellh/go-ps v1.0.0
|
||||
github.com/mssola/useragent v1.0.0
|
||||
github.com/olahol/melody v1.2.1
|
||||
github.com/open-spaced-repetition/go-fsrs v1.2.1
|
||||
github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1
|
||||
github.com/panjf2000/ants/v2 v2.10.0
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||
github.com/radovskyb/watcher v1.0.7
|
||||
|
@ -60,7 +60,7 @@ require (
|
|||
github.com/siyuan-note/filelock v0.0.0-20240724034355-d1ed7bf21d04
|
||||
github.com/siyuan-note/httpclient v0.0.0-20240828084311-6bd9eb73747f
|
||||
github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2
|
||||
github.com/siyuan-note/riff v0.0.0-20240502024535-718add51db67
|
||||
github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726
|
||||
github.com/spf13/cast v1.7.0
|
||||
github.com/steambap/captcha v1.4.1
|
||||
github.com/studio-b12/gowebdav v0.9.0
|
||||
|
|
|
@ -276,8 +276,8 @@ github.com/onsi/ginkgo/v2 v2.20.1 h1:YlVIbqct+ZmnEph770q9Q7NVAz4wwIiVNahee6JyUzo
|
|||
github.com/onsi/ginkgo/v2 v2.20.1/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI=
|
||||
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||
github.com/open-spaced-repetition/go-fsrs v1.2.1 h1:vY1hSQ3gvHtfnw8ahylcZyyqusKWDkWCd1+ca4lZoSc=
|
||||
github.com/open-spaced-repetition/go-fsrs v1.2.1/go.mod h1:WpbNs4TTKZChOHFO+ME0B9femUVZsepFT5mhAioszRg=
|
||||
github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1 h1:ODpQGZqZNsKqAF4/WUdRtfuNtwDIfI6Xj3cSznxk0g0=
|
||||
github.com/open-spaced-repetition/go-fsrs/v2 v2.0.1/go.mod h1:Ry+MLx079nUXwSbYm+OYLK9pQ9yu0cCLWSo3N4H5ZBI=
|
||||
github.com/otiai10/gosseract/v2 v2.4.1 h1:G8AyBpXEeSlcq8TI85LH/pM5SXk8Djy2GEXisgyblRw=
|
||||
github.com/otiai10/gosseract/v2 v2.4.1/go.mod h1:1gNWP4Hgr2o7yqWfs6r5bZxAatjOIdqWxJLWsTsembk=
|
||||
github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs=
|
||||
|
@ -356,8 +356,8 @@ github.com/siyuan-note/httpclient v0.0.0-20240828084311-6bd9eb73747f h1:C54AUt78
|
|||
github.com/siyuan-note/httpclient v0.0.0-20240828084311-6bd9eb73747f/go.mod h1:AX5fjlyJlC9Bwi0ecMQ74IP7d8BXAeq6ruqte3sjB5Y=
|
||||
github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2 h1:/2+tlOThVB86RxSLeW0JFw2ISUrH2ZFRg15ULGAUGAE=
|
||||
github.com/siyuan-note/logging v0.0.0-20240505035402-6430d57006a2/go.mod h1:3Osd2/nwzXZFl6ZcDE4hA0HD83Wyv1fds47nVuapyOM=
|
||||
github.com/siyuan-note/riff v0.0.0-20240502024535-718add51db67 h1:YuBxDIIVBOtvQc/ZLi4SOCY0J+QMRnnco4b1Jh9+SL4=
|
||||
github.com/siyuan-note/riff v0.0.0-20240502024535-718add51db67/go.mod h1:n+yT/5zCIDqRx5lEO8Vxq3kuwzjmXndXFtfJoID7jJY=
|
||||
github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726 h1:bLBpaidGUXZS18eKnpUd5WdrGRz0mymZDLMKtWJe/B8=
|
||||
github.com/siyuan-note/riff v0.0.0-20240828101024-443a09504726/go.mod h1:IThyetU+bmHp9dd9prUlwVyAwx/dBxRdUUysZQ+TYsw=
|
||||
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w=
|
||||
github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||
|
|
|
@ -25,7 +25,7 @@ import (
|
|||
|
||||
"github.com/88250/lute/ast"
|
||||
"github.com/88250/lute/parse"
|
||||
"github.com/open-spaced-repetition/go-fsrs"
|
||||
"github.com/open-spaced-repetition/go-fsrs/v2"
|
||||
"github.com/siyuan-note/siyuan/kernel/filesys"
|
||||
"github.com/siyuan-note/siyuan/kernel/sql"
|
||||
"github.com/siyuan-note/siyuan/kernel/treenode"
|
||||
|
|
|
@ -1327,6 +1327,16 @@ func GetHPathByID(id string) (hPath string, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func GetPathByID(id string) (path string, err error) {
|
||||
tree, err := LoadTreeByBlockID(id)
|
||||
if nil != err {
|
||||
return
|
||||
}
|
||||
|
||||
path = tree.Path
|
||||
return
|
||||
}
|
||||
|
||||
func GetFullHPathByID(id string) (hPath string, err error) {
|
||||
tree, err := LoadTreeByBlockID(id)
|
||||
if nil != err {
|
||||
|
|
Loading…
Add table
Reference in a new issue