Преглед изворни кода

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

Vanessa пре 3 година
родитељ
комит
9a64c860ce
2 измењених фајлова са 36 додато и 3 уклоњено
  1. 23 1
      app/src/protyle/export/index.ts
  2. 13 2
      kernel/model/export.go

+ 23 - 1
app/src/protyle/export/index.ts

@@ -121,8 +121,30 @@ const getExportPath = (option: { type: string, id: string }, pdfOption?: PrintTo
             lockFile(response.data);
             return;
         }
+
+        let exportType = "HTML (SiYuan)"
+        let extension = "html"
+        switch (option.type) {
+            case "htmlmd":
+                exportType = "HTML (Markdown)";
+                break;
+            case "word":
+                exportType = "Word .docx";
+                extension = "docx";
+                break;
+            case "pdf":
+                exportType = "PDF";
+                extension = "pdf";
+                break;
+        }
+
         dialog.showSaveDialog({
-            defaultPath: response.data.rootTitle,
+            title: window.siyuan.languages.export + " " + exportType,
+            defaultPath: response.data.rootTitle + "." + extension,
+            filters: [{
+                name: exportType,
+                extensions: [extension]
+            }],
             properties: ["showOverwriteConfirmation"],
         }).then((result: SaveDialogReturnValue) => {
             if (!result.canceled) {

+ 13 - 2
kernel/model/export.go

@@ -180,13 +180,17 @@ func ExportDocx(id, savePath string) (err error) {
 		return errors.New(msg)
 	}
 
-	if err = gulu.File.Copy(tmpDocxPath, filepath.Join(savePath, name+".docx")); nil != err {
+	if 1 < strings.Count(savePath, filepath.Base(savePath)) {
+		savePath = filepath.Dir(savePath)
+	}
+
+	if err = gulu.File.Copy(tmpDocxPath, savePath); nil != err {
 		logging.LogErrorf("export docx failed: %s", err)
 		return errors.New(fmt.Sprintf(Conf.Language(14), err))
 	}
 	tmpAssets := filepath.Join(tmpDir, "assets")
 	if gulu.File.IsDir(tmpAssets) {
-		if err = gulu.File.Copy(tmpAssets, filepath.Join(savePath, "assets")); nil != err {
+		if err = gulu.File.Copy(tmpAssets, filepath.Join(filepath.Dir(savePath), "assets")); nil != err {
 			logging.LogErrorf("export docx failed: %s", err)
 			return errors.New(fmt.Sprintf(Conf.Language(14), err))
 		}
@@ -199,6 +203,9 @@ func ExportMarkdownHTML(id, savePath string, docx bool) (name, dom string) {
 
 	tree = exportTree(tree, true)
 	name = path.Base(tree.HPath)
+	if 1 < strings.Count(savePath, filepath.Base(savePath)) {
+		savePath = filepath.Dir(savePath)
+	}
 
 	if err := os.MkdirAll(savePath, 0755); nil != err {
 		logging.LogErrorf("mkdir [%s] failed: %s", savePath, err)
@@ -283,6 +290,10 @@ func ExportHTML(id, savePath string, pdf bool) (name, dom string) {
 	tree = exportTree(tree, true)
 	name = path.Base(tree.Path)
 
+	if 1 < strings.Count(savePath, filepath.Base(savePath)) {
+		savePath = filepath.Dir(savePath)
+	}
+
 	if err := os.MkdirAll(savePath, 0755); nil != err {
 		logging.LogErrorf("mkdir [%s] failed: %s", savePath, err)
 		return