Przeglądaj źródła

:bug: Fix export .sy.zip structure https://github.com/siyuan-note/siyuan/issues/12831

Daniel 8 miesięcy temu
rodzic
commit
c3d5db2e12
1 zmienionych plików z 20 dodań i 27 usunięć
  1. 20 27
      kernel/model/export.go

+ 20 - 27
kernel/model/export.go

@@ -255,8 +255,7 @@ func Export2Liandi(id string) (err error) {
 		case 404:
 		case 404:
 			foundArticle = false
 			foundArticle = false
 		default:
 		default:
-			msg := fmt.Sprintf("get liandi article info failed [sc=%d]", resp.StatusCode)
-			err = errors.New(msg)
+			err = errors.New(fmt.Sprintf("get liandi article info failed [sc=%d]", resp.StatusCode))
 			return
 			return
 		}
 		}
 	}
 	}
@@ -315,8 +314,7 @@ func Export2Liandi(id string) (err error) {
 		}
 		}
 	}
 	}
 
 
-	msg := fmt.Sprintf(Conf.Language(181), util.GetCloudAccountServer()+"/article/"+articleId)
-	util.PushMsg(msg, 7000)
+	util.PushMsg(fmt.Sprintf(Conf.Language(181), util.GetCloudAccountServer()+"/article/"+articleId), 7000)
 	return
 	return
 }
 }
 
 
@@ -505,8 +503,7 @@ func exportData(exportFolder string) (zipPath string, err error) {
 	}
 	}
 
 
 	zipCallback := func(filename string) {
 	zipCallback := func(filename string) {
-		msg := Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), filename)
-		util.PushEndlessProgress(msg)
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), filename))
 	}
 	}
 
 
 	if err = zip.AddDirectory(baseFolderName, exportFolder, zipCallback); err != nil {
 	if err = zip.AddDirectory(baseFolderName, exportFolder, zipCallback); err != nil {
@@ -619,8 +616,7 @@ func ExportDocx(id, savePath string, removeAssets, merge bool) (fullPath string,
 	if "" != docxTemplate {
 	if "" != docxTemplate {
 		if !gulu.File.IsExist(docxTemplate) {
 		if !gulu.File.IsExist(docxTemplate) {
 			logging.LogErrorf("docx template [%s] not found", docxTemplate)
 			logging.LogErrorf("docx template [%s] not found", docxTemplate)
-			msg := fmt.Sprintf(Conf.Language(197), docxTemplate)
-			err = errors.New(msg)
+			err = errors.New(fmt.Sprintf(Conf.Language(197), docxTemplate))
 			return
 			return
 		}
 		}
 
 
@@ -633,8 +629,7 @@ func ExportDocx(id, savePath string, removeAssets, merge bool) (fullPath string,
 	output, err := pandoc.CombinedOutput()
 	output, err := pandoc.CombinedOutput()
 	if err != nil {
 	if err != nil {
 		logging.LogErrorf("export docx failed: %s", gulu.Str.FromBytes(output))
 		logging.LogErrorf("export docx failed: %s", gulu.Str.FromBytes(output))
-		msg := fmt.Sprintf(Conf.Language(14), gulu.Str.FromBytes(output))
-		err = errors.New(msg)
+		err = errors.New(fmt.Sprintf(Conf.Language(14), gulu.Str.FromBytes(output)))
 		return
 		return
 	}
 	}
 
 
@@ -1540,23 +1535,22 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
 
 
 	trees := map[string]*parse.Tree{}
 	trees := map[string]*parse.Tree{}
 	refTrees := map[string]*parse.Tree{}
 	refTrees := map[string]*parse.Tree{}
-	treeCache := map[string]*parse.Tree{}
+	luteEngine := util.NewLute()
 	for i, p := range docPaths {
 	for i, p := range docPaths {
-		docIAL := box.docIAL(p)
-		if nil == docIAL {
-			continue
-		}
-
-		msg := Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), fmt.Sprintf("%d/%d %s", i+1, len(docPaths), docIAL["title"]))
-		util.PushEndlessProgress(msg)
-
-		id := docIAL["id"]
-		tree, err := LoadTreeByBlockID(id)
+		tree, err := filesys.LoadTree(boxID, p, luteEngine)
 		if err != nil {
 		if err != nil {
 			continue
 			continue
 		}
 		}
 		trees[tree.ID] = tree
 		trees[tree.ID] = tree
 
 
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), fmt.Sprintf("%d/%d %s", i+1, len(docPaths), tree.Root.IALAttr("title"))))
+	}
+
+	count := 1
+	treeCache := map[string]*parse.Tree{}
+	for _, tree := range trees {
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), fmt.Sprintf("%d/%d %s", count, len(docPaths), tree.Root.IALAttr("title"))))
+
 		refs := map[string]*parse.Tree{}
 		refs := map[string]*parse.Tree{}
 		exportRefTrees(tree, &refs, &treeCache)
 		exportRefTrees(tree, &refs, &treeCache)
 		for refTreeID, refTree := range refs {
 		for refTreeID, refTree := range refs {
@@ -1567,9 +1561,9 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
 	}
 	}
 
 
 	util.PushEndlessProgress(Conf.Language(65))
 	util.PushEndlessProgress(Conf.Language(65))
+	count = 0
 
 
 	// 按文件夹结构复制选择的树
 	// 按文件夹结构复制选择的树
-	count := 0
 	total := len(trees) + len(refTrees)
 	total := len(trees) + len(refTrees)
 	for _, tree := range trees {
 	for _, tree := range trees {
 		readPath := filepath.Join(util.DataDir, tree.Box, tree.Path)
 		readPath := filepath.Join(util.DataDir, tree.Box, tree.Path)
@@ -1592,7 +1586,7 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
 		}
 		}
 		count++
 		count++
 
 
-		util.PushEndlessProgress(fmt.Sprintf(Conf.Language(66), fmt.Sprintf("%d/%d ", count, total)+tree.HPath))
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.Language(66), fmt.Sprintf("%d/%d ", count, total)+tree.HPath))
 	}
 	}
 
 
 	// 引用树放在导出文件夹根路径下
 	// 引用树放在导出文件夹根路径下
@@ -1612,7 +1606,7 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
 		}
 		}
 		count++
 		count++
 
 
-		util.PushEndlessProgress(fmt.Sprintf(Conf.Language(66), fmt.Sprintf("%d/%d ", count, total)+tree.HPath))
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.Language(66), fmt.Sprintf("%d/%d ", count, total)+tree.HPath))
 	}
 	}
 
 
 	// 将引用树合并到选择树中,以便后面一次性导出资源文件
 	// 将引用树合并到选择树中,以便后面一次性导出资源文件
@@ -1798,8 +1792,7 @@ func exportSYZip(boxID, rootDirPath, baseFolderName string, docPaths []string) (
 	}
 	}
 
 
 	zipCallback := func(filename string) {
 	zipCallback := func(filename string) {
-		msg := Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), filename)
-		util.PushEndlessProgress(msg)
+		util.PushEndlessProgress(Conf.language(65) + " " + fmt.Sprintf(Conf.language(70), filename))
 	}
 	}
 
 
 	if err = zip.AddDirectory(baseFolderName, exportFolder, zipCallback); err != nil {
 	if err = zip.AddDirectory(baseFolderName, exportFolder, zipCallback); err != nil {
@@ -2735,7 +2728,7 @@ type refAsFootnotes struct {
 	refAnchorText string
 	refAnchorText string
 }
 }
 
 
-func exportRefTrees(tree *parse.Tree, retTrees *map[string]*parse.Tree, treeCache *map[string]*parse.Tree) {
+func exportRefTrees(tree *parse.Tree, retTrees, treeCache *map[string]*parse.Tree) {
 	if nil != (*retTrees)[tree.ID] {
 	if nil != (*retTrees)[tree.ID] {
 		return
 		return
 	}
 	}