Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2022-12-12 11:46:52 +08:00
commit 201fc51f32
12 changed files with 49 additions and 18 deletions

1
.gitignore vendored
View file

@ -1,6 +1,5 @@
# Binaries for programs and plugins
*.exe
cloc.exe
*.dll
*.so
*.dylib

View file

@ -636,14 +636,14 @@
"fileTree3": "No confirmation required when deleting documents",
"fileTree4": "If not enabled, a confirmation box will pop up every time you delete a document",
"fileTree5": "Ref create doc save location",
"fileTree6": "When using <code class='fn__code'>((</code>, the save path of the new document (for example, /folder1/folder2/, the relative path of the current doc is used if it does not start with /)",
"fileTree6": "When using <code class='fn__code'>((</code>, the save path of the new document (for example, <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>, the relative path of the current doc is used if it does not start with /)",
"fileTree7": "Open in the current tab",
"fileTree8": "The newly opened document tab will replace the unmodified tab",
"fileTree9": "Close all tabs at startup",
"fileTree10": "After enabling, the unpinned tabs that were opened the last time will be automatically closed every time the interface is started",
"fileTree11": "New daily note",
"fileTree12": "New doc name template",
"fileTree13": "The template snippet is used by default when creating a new doc for naming, for example <code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree13": "The template snippet is used by default when creating a new doc for naming (for example <code class='fn__code'>{{now | date \"20060102150405\"}}</code>)",
"fileTree14": "Save path (support date format template variables, such as <code class='fn__code'>/Daily Notes/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
"fileTree15": "Template path (for example, <code class='fn__code'>dailynote.md</code>, the file needs to be placed under the workspace/data/templates/)",
"fileTree16": "Maximum number to list",

View file

@ -171,6 +171,7 @@
"exportPDF3": "Escala de la página",
"exportPDF4": "Eliminar directorio de activos",
"exportPDF5": "Mantener doblado",
"exportPDF6": "Fusionar subdocumentos",
"upload": "Subir",
"reminderTip": "La hora del recordatorio no puede ser inferior a la hora actual",
"wechatTip": "El bloque de contenido se enviará a la nube en texto claro, y se empujará a través del mensaje de plantilla de WeChat MP cuando caduque",
@ -635,14 +636,14 @@
"fileTree3": "No se requiere confirmación al borrar documentos",
"fileTree4": "Si no se activa, aparecerá un cuadro de confirmación cada vez que se elimine un documento",
"fileTree5": "Ref crear ubicación de guardado de documentos",
"fileTree6": "Al utilizar <code class='fn__code'>((</code>, la ruta de guardado del nuevo documento (por ejemplo, /carpeta1/carpeta2/, se utiliza la ruta relativa del documento actual si no empieza por /)",
"fileTree6": "Al utilizar <code class='fn__code'>((</code>, la ruta de guardado del nuevo documento (por ejemplo, <code class='fn__code'>/carpeta1/{{now | date \"20060102150405\"}}/</code>, se utiliza la ruta relativa del documento actual si no empieza por /)",
"fileTree7": "Abrir en la pestaña actual",
"fileTree8": "La pestaña del documento recién abierto sustituirá a la pestaña no modificada",
"fileTree9": "Cerrar todas las pestañas al inicio",
"fileTree10": "Cuando está habilitado, las pestañas no fijadas que se abrieron la última vez se cerrarán automáticamente cada vez que se inicie la interfaz",
"fileTree11": "Nueva nota diaria",
"fileTree12": "Nueva pantilla de nombre de documento",
"fileTree13": "El fragmento de plantilla se utiliza por defecto cuando se crea un nuevo documento para nombrar, por ejemplo <code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree13": "El fragmento de plantilla se utiliza por defecto cuando se crea un nuevo documento para nombrar (por ejemplo <code class='fn__code'>{{now | date \"20060102150405\"}}</code>)",
"fileTree14": "Ruta de guardado (admite variables de plantilla de formato de fecha, como <code class='fn__code'>/Notas del día/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>)",
"fileTree15": "Ruta de la plantilla (por ejemplo, <code class='fn__code'>dailynote.md</code>, el archivo debe colocarse en el espacio de trabajo/data/templates/)",
"fileTree16": "Número máximo a listar",

View file

@ -636,14 +636,14 @@
"fileTree3": "Aucune confirmation requise lors de la suppression de documents",
"fileTree4": "Si non activé, une boîte de confirmation apparaîtra à chaque fois que vous supprimerez un document",
"fileTree5": "Référence créer doc enregistrer emplacement",
"fileTree6": "Lors de l'utilisation de <code class='fn__code'>((</code>, le chemin d'enregistrement du nouveau document (par exemple, /dossier1/ dossier2/, le chemin relatif du doc actuel est utilisé s'il ne commence pas par /).",
"fileTree6": "Lors de l'utilisation de <code class='fn__code'>((</code>, le chemin d'enregistrement du nouveau document (par exemple, <code class='fn__code'>/dossier1/{{now | date \"20060102150405\"}}/</code>, le chemin relatif du doc actuel est utilisé s'il ne commence pas par /).",
"fileTree7": "Ouvrir dans l'Onglet actuel",
"fileTree8": "L'onglet du document nouvellement ouvert remplacera l'Onglet non modifié.",
"fileTree9": "Fermer tous les onglets au démarrage",
"fileTree10": "Lorsqu'il est activé, les onglets non épinglés qui ont été ouverts la dernière fois seront automatiquement fermés à chaque démarrage de l'interface",
"fileTree11": "Nouvelle note quotidienne",
"fileTree12": "Nouveau template de nom de document",
"fileTree13": "L'extrait de modèle est utilisé par défaut lors de la création d'un nouveau document pour le nommage, par exemple <code class='fn__code'>{{maintenant | date \"20060102150405\"}}</code>.",
"fileTree13": "L'extrait de modèle est utilisé par défaut lors de la création d'un nouveau document pour le nommage (par exemple <code class='fn__code'>{{maintenant | date \"20060102150405\"}}</code>).",
"fileTree14": "Chemin d'enregistrement (prise en charge des variables de modèle de format de date, telles que <code class='fn__code'>/Notes quotidiennes/{{mais | date \"2006/01\"}}/{{mais | date \"2006-01-02\"}}</code>)",
"fileTree15": "Chemin du modèle (par exemple, <code class='fn__code'>dailynote.md</code>, le fichier doit être placé sous \"l'espace de travail/data/templates/\")",
"fileTree16": "Nombre maximum à lister",

View file

@ -636,14 +636,14 @@
"fileTree3": "刪除文檔時不需要確認",
"fileTree4": "不啟用時每次刪除文檔都會彈出確認框",
"fileTree5": "塊引新建文檔存放位置",
"fileTree6": "使用 <code class='fn__code'>((</code> 時新建文檔的存放路徑(例如 /folder1/folder2/,不以 / 開頭則使用當前文檔相對路徑)",
"fileTree6": "使用 <code class='fn__code'>((</code> 時新建文檔的存放路徑(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>,不以 / 開頭則使用當前文檔相對路徑)",
"fileTree7": "在當前分頁中打開",
"fileTree8": "新打開的文檔分頁將會替換沒有修改過的分頁",
"fileTree9": "啟動時關閉所有頁簽",
"fileTree10": "啟用後每次啟動界面後都會自動關閉上次打開未釘住的頁簽",
"fileTree11": "新建日記",
"fileTree12": "新建文檔名範本",
"fileTree13": "使用該範本片段進行命名,例如 <code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree13": "使用該範本片段進行命名(例如<code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree14": "存放路徑(可使用日期格式範本變數,例如 <code class='fn__code'>/日記/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>",
"fileTree15": "範本路徑(例如 <code class='fn__code'>dailynote.md</code>,需要將該檔放置於工作空間/data/templates/ 下)",
"fileTree16": "最大列出數量",

View file

@ -636,14 +636,14 @@
"fileTree3": "删除文档时不需要确认",
"fileTree4": "不启用时每次删除文档都会弹出确认框",
"fileTree5": "块引新建文档存放位置",
"fileTree6": "使用 <code class='fn__code'>((</code> 时新建文档的存放路径(例如 /folder1/folder2/,不以 / 开头则使用当前文档相对路径)",
"fileTree6": "使用 <code class='fn__code'>((</code> 时新建文档的存放路径(例如 <code class='fn__code'>/folder1/{{now | date \"20060102150405\"}}/</code>,不以 / 开头则使用当前文档相对路径)",
"fileTree7": "在当前页签中打开",
"fileTree8": "新打开的文档页签将会替换没有修改过的页签",
"fileTree9": "启动时关闭所有页签",
"fileTree10": "启用后每次启动界面后都会自动关闭上次打开未钉住的页签",
"fileTree11": "新建日记",
"fileTree12": "新建文档名模板",
"fileTree13": "使用该模板片段进行命名例如 <code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree13": "使用该模板片段进行命名例如 <code class='fn__code'>{{now | date \"20060102150405\"}}</code>",
"fileTree14": "存放路径(可使用日期格式模板变量,例如 <code class='fn__code'>/日记/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}</code>",
"fileTree15": "模板路径(例如 <code class='fn__code'>dailynote.md</code>,需要将该文件放置于工作空间/data/templates/ 下)",
"fileTree16": "最大列出数量",

View file

@ -557,7 +557,7 @@ func getDocNameTemplate(c *gin.Context) {
nameTemplate = model.Conf.FileTree.CreateDocNameTemplate
}
name, err := model.RenderCreateDocNameTemplate(nameTemplate)
name, err := model.RenderGoTemplate(nameTemplate)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
@ -568,6 +568,36 @@ func getDocNameTemplate(c *gin.Context) {
}
}
func getRefCreateSavePath(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret)
if !ok {
return
}
notebook := arg["notebook"].(string)
box := model.Conf.Box(notebook)
refCreateSavePath := model.Conf.FileTree.RefCreateSavePath
if nil != box {
refCreateSavePath = box.GetConf().RefCreateSavePath
}
if "" == refCreateSavePath {
refCreateSavePath = model.Conf.FileTree.RefCreateSavePath
}
p, err := model.RenderGoTemplate(refCreateSavePath)
if nil != err {
ret.Code = -1
ret.Msg = err.Error()
return
}
ret.Data = map[string]interface{}{
"path": p,
}
}
func changeSort(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)

View file

@ -85,6 +85,7 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/filetree/listDocsByPath", model.CheckAuth, listDocsByPath)
ginServer.Handle("POST", "/api/filetree/getDoc", model.CheckAuth, getDoc)
ginServer.Handle("POST", "/api/filetree/getDocNameTemplate", model.CheckAuth, getDocNameTemplate)
ginServer.Handle("POST", "/api/filetree/getRefCreateSavePath", model.CheckAuth, getRefCreateSavePath)
ginServer.Handle("POST", "/api/filetree/changeSort", model.CheckAuth, changeSort)
ginServer.Handle("POST", "/api/filetree/lockFile", model.CheckAuth, lockFile)
ginServer.Handle("POST", "/api/filetree/createDocWithMd", model.CheckAuth, model.CheckReadonly, createDocWithMd)

View file

@ -6,7 +6,7 @@ require (
github.com/88250/clipboard v0.1.5
github.com/88250/css v0.1.2
github.com/88250/gulu v1.2.3-0.20221117052724-cd06804db798
github.com/88250/lute v1.7.5-0.20221206095954-a4a95834a327
github.com/88250/lute v1.7.5-0.20221211155550-bad4c4be7125
github.com/88250/pdfcpu v0.3.13
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
github.com/ConradIrwin/font v0.0.0-20210318200717-ce8d41cc0732

View file

@ -17,8 +17,8 @@ github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5 h1:8HdZozCsXS
github.com/88250/go-sqlite3 v1.14.13-0.20220714142610-fbbda1ee84f5/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/88250/gulu v1.2.3-0.20221117052724-cd06804db798 h1:sR/s/Y9wyl79ZRCUERwLPo9zqaB3KhNRodCMTJ4ozEU=
github.com/88250/gulu v1.2.3-0.20221117052724-cd06804db798/go.mod h1:I1qBzsksFL2ciGSuqDE7R3XW4BUMrfDgOvSXEk7FsAI=
github.com/88250/lute v1.7.5-0.20221206095954-a4a95834a327 h1:qT7A7AUVLuqZOWzhLKtJcZ8MPIiqqmX64M+YoYhYnDU=
github.com/88250/lute v1.7.5-0.20221206095954-a4a95834a327/go.mod h1:cEoBGi0zArPqAsp0MdG9SKinvH/xxZZWXU7sRx8vHSA=
github.com/88250/lute v1.7.5-0.20221211155550-bad4c4be7125 h1:zwReaqEwPREiGHHwcAYNTPNZiW8NF5FjKLv+R3wZLZo=
github.com/88250/lute v1.7.5-0.20221211155550-bad4c4be7125/go.mod h1:cEoBGi0zArPqAsp0MdG9SKinvH/xxZZWXU7sRx8vHSA=
github.com/88250/pdfcpu v0.3.13 h1:touMWMZkCGalMIbEg9bxYp7rETM+zwb9hXjwhqi4I7Q=
github.com/88250/pdfcpu v0.3.13/go.mod h1:S5YT38L/GCjVjmB4PB84PymA1qfopjEhfhTNQilLpv4=
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=

View file

@ -1335,7 +1335,7 @@ func CreateDailyNote(boxID string) (p string, existed bool, err error) {
return
}
hPath, err := RenderCreateDocNameTemplate(boxConf.DailyNoteSavePath)
hPath, err := RenderGoTemplate(boxConf.DailyNoteSavePath)
if nil != err {
return
}

View file

@ -41,8 +41,8 @@ import (
"github.com/siyuan-note/siyuan/kernel/sql"
)
func RenderCreateDocNameTemplate(nameTemplate string) (ret string, err error) {
tpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(nameTemplate)
func RenderGoTemplate(templateContent string) (ret string, err error) {
tpl, err := template.New("").Funcs(sprig.TxtFuncMap()).Parse(templateContent)
if nil != err {
return "", errors.New(fmt.Sprintf(Conf.Language(44), err.Error()))
}