Browse Source

fix parseMd function

SyuanYu 2 years ago
parent
commit
9746df6757
100 changed files with 79 additions and 312 deletions
  1. 1 1
      backstage/collections/forms.py
  2. 1 1
      backstage/collections/routes.py
  3. 1 126
      backstage/static/js/editor.js
  4. 16 117
      backstage/static/js/yo.js
  5. 6 7
      backstage/static/js/yocopy.js
  6. 5 5
      backstage/templates/blogs.html
  7. 11 9
      backstage/templates/collections.html
  8. 18 17
      backstage/templates/editor.html
  9. 3 3
      backstage/templates/editorcollection.html
  10. 0 9
      backstage/templates/frequently_asked_questions.html
  11. 3 3
      backstage/templates/news.html
  12. 5 5
      backstage/templates/solid_wood_furniture.html
  13. 5 5
      backstage/templates/system_furniture.html
  14. 4 4
      backstage/templates/tables/editor_table.html
  15. BIN
      backstage/upload/0630/img/029ecd7ed1844144a7946809f8c47a20.webp
  16. BIN
      backstage/upload/0630/img/0362fcce422648d88a79fb722b3dec36.webp
  17. BIN
      backstage/upload/0630/img/08a0d18b15d94b86ac7bca9124c28294.webp
  18. BIN
      backstage/upload/0630/img/0911cbeec0534e38841dcb472bc1440c.webp
  19. BIN
      backstage/upload/0630/img/0cb540a14da34e5abffee128ed8ea239.webp
  20. BIN
      backstage/upload/0630/img/0d67ef513066441487c3b3ba1dcee426.webp
  21. BIN
      backstage/upload/0630/img/1063b8475290452c84b08418b6e60141.webp
  22. BIN
      backstage/upload/0630/img/19b915f96a70420cbd956c862c8b44bc.webp
  23. BIN
      backstage/upload/0630/img/19bc97fedc0040d8a35173e49a96b833.webp
  24. BIN
      backstage/upload/0630/img/1c2325c1f42e4b0aa035451e6494887b.webp
  25. BIN
      backstage/upload/0630/img/1ce45e2da80b459592d7e677a3249c2a.webp
  26. BIN
      backstage/upload/0630/img/2492fa2bdaa342708fdc3a59fb8e433e.webp
  27. BIN
      backstage/upload/0630/img/24e2967a680b4fad9477fc1943fd581b.webp
  28. BIN
      backstage/upload/0630/img/2862e38570c94d0f939c045cb96d2ba7.webp
  29. BIN
      backstage/upload/0630/img/2a8ab360ee694d6e9f490bea4791882a.webp
  30. BIN
      backstage/upload/0630/img/2ec62de4571f475f967b7c00a6adff5c.webp
  31. BIN
      backstage/upload/0630/img/34499917e6bb4cc0b6f8231b4294a65b.webp
  32. BIN
      backstage/upload/0630/img/37ce90e400da4620a0845930e51be7ea.webp
  33. BIN
      backstage/upload/0630/img/38723b121d494013a25ce502703aa26d.webp
  34. BIN
      backstage/upload/0630/img/3c9e56d761be4d5f9cd66a6ae93d90c0.webp
  35. BIN
      backstage/upload/0630/img/3de90f3b5dec49f091b99a27cff93b74.webp
  36. BIN
      backstage/upload/0630/img/412c120d8e3744e89a5aeadffa7511b5.webp
  37. BIN
      backstage/upload/0630/img/4152c12a8d2448b5a6ddc6235e9e2b44.webp
  38. BIN
      backstage/upload/0630/img/41c996c3c2f946cb8c374bfc508c10d5.webp
  39. BIN
      backstage/upload/0630/img/42ff2eb495ce4c798630226a68e4b181.webp
  40. BIN
      backstage/upload/0630/img/43352c7c4be5439ab035521221951bdd.webp
  41. BIN
      backstage/upload/0630/img/43f5834e4c6149359863d9cf58499692.webp
  42. BIN
      backstage/upload/0630/img/46ecb8dabb08456db1617133630696a9.webp
  43. BIN
      backstage/upload/0630/img/4818d2e6192c448aa24224d3bee11808.webp
  44. BIN
      backstage/upload/0630/img/4a21f783141248ceab2d21eb602c4831.webp
  45. BIN
      backstage/upload/0630/img/4afa9b110b664e489e126c95a14e9f35.webp
  46. BIN
      backstage/upload/0630/img/4c2ab585d7cd4070b2d608515a9ad125.webp
  47. BIN
      backstage/upload/0630/img/5623b32cd5364ccf8eca3193c3e06ad2.webp
  48. BIN
      backstage/upload/0630/img/56699103b6f14ce1908701aee4aca6af.webp
  49. BIN
      backstage/upload/0630/img/5b784d8a5a044446bdb77885bafbaf68.webp
  50. BIN
      backstage/upload/0630/img/5c2ad2552f24469384dcb071d0205453.webp
  51. BIN
      backstage/upload/0630/img/61de115f146048858c0075294f79d54c.webp
  52. BIN
      backstage/upload/0630/img/62893cdadaf44ddbaa76e73b7a72dc2a.webp
  53. BIN
      backstage/upload/0630/img/67bc5dc0050540e7a8facc693cf3b8ad.webp
  54. BIN
      backstage/upload/0630/img/6961d2dc8cf84eaaa3bfa7d006ca1f83.webp
  55. BIN
      backstage/upload/0630/img/6979c874647245ad816bed397fe52efb.webp
  56. BIN
      backstage/upload/0630/img/6ac5bf493bed4e1b869216b00964abbf.webp
  57. BIN
      backstage/upload/0630/img/6b9a452e1b7544d8b549ede6d801c1ef.webp
  58. BIN
      backstage/upload/0630/img/6f97bdcd47334a0bb0d74357ae92c1ba.webp
  59. BIN
      backstage/upload/0630/img/71598a4af1d243a8bb32b48c0800de53.webp
  60. BIN
      backstage/upload/0630/img/72d4808cc48946e8910d814fcfa92593.webp
  61. BIN
      backstage/upload/0630/img/7338c4b73c2e415fa991803c910fb14a.webp
  62. BIN
      backstage/upload/0630/img/734c11029d034c4395739f0e4d4b9cdf.webp
  63. BIN
      backstage/upload/0630/img/74ce02f272da49508652c828ad4ff63d.webp
  64. BIN
      backstage/upload/0630/img/755c28d3f73c42f499e801959e39fe8c.webp
  65. BIN
      backstage/upload/0630/img/7ca6215b803345238123e2071ab4e02b.webp
  66. BIN
      backstage/upload/0630/img/7ccbcdde72fc46c3b0abfa71f2bcda7b.webp
  67. BIN
      backstage/upload/0630/img/7cf372e6f6bb48ea9ff70ad269bf50f7.webp
  68. BIN
      backstage/upload/0630/img/807c298a219a4434b298ceb65b70e7d4.webp
  69. BIN
      backstage/upload/0630/img/80a1e9314f1c4dcd93bc63d113386af6.webp
  70. BIN
      backstage/upload/0630/img/85579b4b725d4886bb4eb2a6c00f9042.webp
  71. BIN
      backstage/upload/0630/img/86479c348ada4cd3910200e55bfd97b4.webp
  72. BIN
      backstage/upload/0630/img/8681659b950e4b8fa2d4230f3fbbedd4.webp
  73. BIN
      backstage/upload/0630/img/8f8d0b589d3342658376b9a764580577.webp
  74. BIN
      backstage/upload/0630/img/900a21c40f6c41eeacf8a339c46cb810.webp
  75. BIN
      backstage/upload/0630/img/9164b1d12709411f9824e4880959fc50.webp
  76. BIN
      backstage/upload/0630/img/9172a5cf4f124c3ba2ee6d42cc66e611.webp
  77. BIN
      backstage/upload/0630/img/91dd9ebb3767482a9af133e0930dd087.webp
  78. BIN
      backstage/upload/0630/img/95234593c84b41aabe45df6f63bb9247.webp
  79. BIN
      backstage/upload/0630/img/95cbd19bf8ef4209aafe15f4665cf6d1.webp
  80. BIN
      backstage/upload/0630/img/97718feb6ab946dfa4d0bcd782787784.webp
  81. BIN
      backstage/upload/0630/img/99660c928fcd4c57a03d1c9fb6130bdf.webp
  82. BIN
      backstage/upload/0630/img/9b15a0fe5fd44c4ab9c7a0a729984eed.webp
  83. BIN
      backstage/upload/0630/img/a21cc658ce6247f6b09d4709212230dd.webp
  84. BIN
      backstage/upload/0630/img/a469a4bc52944f93b070b45c79c511c6.webp
  85. BIN
      backstage/upload/0630/img/a4e0b625c28a488e9d4d1c154de5d51c.webp
  86. BIN
      backstage/upload/0630/img/ab564ac4191640998ef55f4031457293.webp
  87. BIN
      backstage/upload/0630/img/abac59be84b449748b9b7b326d8f15c8.webp
  88. BIN
      backstage/upload/0630/img/acc42726261f472e916f78a72cd4ffde.webp
  89. BIN
      backstage/upload/0630/img/ae0f8e77b6c64ee98308d5d85ee9c754.webp
  90. BIN
      backstage/upload/0630/img/b07c414156974570bd2805161c6e8b7a.webp
  91. BIN
      backstage/upload/0630/img/b57e56ab2a8e4d7c823495a53760feda.webp
  92. BIN
      backstage/upload/0630/img/b58047a1b3134462b14376f24d6e2579.webp
  93. BIN
      backstage/upload/0630/img/bf7fa04e696748479ddbeed3d2aaa923.webp
  94. BIN
      backstage/upload/0630/img/c124673cb3734a149ae931466c55b0b7.webp
  95. BIN
      backstage/upload/0630/img/c34a7a695ebc4492a549a3409c5e6204.webp
  96. BIN
      backstage/upload/0630/img/c3d942d259f94b60b0bbd8b80eb3b98e.webp
  97. BIN
      backstage/upload/0630/img/c4292749d0cc47fb829aea342086575f.webp
  98. BIN
      backstage/upload/0630/img/c88e2998a8da41ae98e5a6c355afa84e.webp
  99. BIN
      backstage/upload/0630/img/c9600d5af84541de8894f18c9a3db975.webp
  100. BIN
      backstage/upload/0630/img/ca9f962ab22c45f89c145272337dd2c7.webp

+ 1 - 1
backstage/collections/forms.py

@@ -15,7 +15,7 @@ class CollectionCreateForm(FlaskForm):
     bannerimgtext = StringField('封面圖片說明', validators=[DataRequired()])
     homeowner = StringField('屋主', validators=[DataRequired()])
     size = StringField('坪數', validators=[DataRequired()])
-    bednum = SelectField('格局', choices=['1房', '2房', '3房', '4房以上',],validators=[DataRequired()])
+    bednum = SelectField('格局', choices=['1房', '2房', '3房', '兩房一廳', '三房兩廳','四房兩廳',],validators=[DataRequired()])
     housetype = SelectField('屋型', choices=['大樓', '透天'], validators=[DataRequired()])
     designer = StringField('設計師', validators=[DataRequired()])
     space = TextAreaField('設計空間', validators=[DataRequired()])

+ 1 - 1
backstage/collections/routes.py

@@ -71,7 +71,7 @@ loc: "{}"\n\
 budget: "{}"\n\
 construction: "{}"\n\
 collection_description: "{}"\n\
-collection_slider:"" \n\
+collection_slider: "" \n\
 comment: "{}"\n
 ---'''.format(form.title.data, form.description.data, form.title.data,
               get_now_time(), 'true', 'collection', '/collection/{}'.format(eng_name),

+ 1 - 126
backstage/static/js/editor.js

@@ -193,15 +193,8 @@ axios.get(contentApiUrl).then(({ data }) => {
       embed: Embed,
     },
     data: { blocks: editorBlocks },
-    onReady: function () {
-      //saveButton.click();
-    },
-    onChange: function (api, block) {
-      //console.log('something changed', block);
-    },
   });
   if ($("#editorjs1").length > 0) {
-    console.log("editorjs1存在");
     editorslider = new EditorJS({
       readOnly: false,
       holder: "editorjs1",
@@ -237,32 +230,20 @@ axios.get(contentApiUrl).then(({ data }) => {
 });
 
 function editorSave() {
-  console.log("editorSave");
   if ($("#editorjs1").length > 0) {
-    // editorslider.save().then((outputData1) => {
-    //   console.log('Article data: ', outputData1)
-
-    // }).catch((error) => {
-    //   console.log('Saving failed: ', error)
-    // });
     editor
       .save()
       .then((outputData) => {
-        console.log("第一層 outputData", JSON.stringify(outputData, null, 2));
         editorslider
           .save()
           .then((result) => {
-            console.log("第二層 outputData1", JSON.stringify(result, null, 2));
-            // console.log('Article data: ', outputData1)
             var articleinfo = GetMdHeader(result);
             var mdContent =
               '<div class="container-fluid blog_article p-0">\n\n';
-            //var headings = new Array();
 
             for (i = 0; i < outputData.blocks.length; i++) {
               var paragraphdata = "";
 
-              //alert(block.type);
               block = outputData.blocks[i];
               if (block.type == "header") {
                 mdContent += "## " + block.data.text + "\n";
@@ -274,11 +255,8 @@ function editorSave() {
                   mdContent += paragraphdata + "\n\n";
                 }
               } else if (block.type == "hr") {
-                //alert('hr');
                 mdContent += "\n---\n";
               } else if (block.type == "image") {
-                //console.log(block.data.file.url);
-                //console.log(JSON.parse(document.getElementById('url').textContent).url);
                 iurl = block.data.file.url.split("/");
                 mdContent +=
                   '<img class="img-fluid" alt="' +
@@ -308,13 +286,11 @@ function editorSave() {
                   block.data.height +
                   '"></iframe>\n\n';
               } else if (block.type == "table") {
-                //alert(tableArrayToHtml(block.data).length);
                 mdContent +=
                   "\n" + tableArrayToHtml(block.data.content) + "\n\n";
-                //console.log(tableArrayToHtml(block.data.content));
               }
             }
-            //alert(mdContent);
+
             mdContent += "</div>\n\n";
             var mdData = articleinfo + "\n\n" + mdContent;
 
@@ -329,108 +305,14 @@ function editorSave() {
           .catch((error) => {
             console.log("Saving failed: ", error);
           });
-
-        // var articleinfo = GetMdHeader();
-        // var mdContent = '<div class="container-fluid blog_article p-0">\n\n';
-        // //var headings = new Array();
-
-        // for (i = 0; i < outputData.blocks.length; i++) {
-        //   var paragraphdata = "";
-
-        //   //alert(block.type);
-        //   block = outputData.blocks[i];
-        //   if (block.type == "header") {
-        //     mdContent += "## " + block.data.text + "\n";
-        //   } else if (block.type == "paragraph") {
-        //     paragraphdata += block.data.text;
-
-        //     if (paragraphdata != "") {
-        //       //make sure it's not empty
-        //       mdContent += paragraphdata + "\n\n";
-        //     }
-        //   } else if (block.type == "hr") {
-        //     //alert('hr');
-        //     mdContent += "\n---\n";
-        //   } else if (block.type == "image") {
-        //     //console.log(block.data.file.url);
-        //     //console.log(JSON.parse(document.getElementById('url').textContent).url);
-        //     iurl = block.data.file.url.split("/");
-        //     mdContent +=
-        //       '<img class="img-fluid" alt="' +
-        //       block.data.caption +
-        //       '"\n  src="' +
-        //       iurl[iurl.length - 2] +
-        //       "/" +
-        //       iurl[iurl.length - 1] +
-        //       '"\n  layout="responsive"></img>';
-        //     if (block.data.caption != "") {
-        //       mdContent +=
-        //         '<div class="img-text">' + block.data.caption + "</div>";
-        //     }
-        //     mdContent += "\n\n";
-        //   } else if (block.type == "delimiter") {
-        //     mdContent += "\n---\n";
-        //   } else if (block.type == "embed") {
-        //     mdContent +=
-        //       "\n<iframe src=" +
-        //       block.data.embed.replace("https://www.youtube.com/embed/", "") +
-        //       'layout="responsive" width="' +
-        //       block.data.width +
-        //       '" height="' +
-        //       block.data.height +
-        //       '"></iframe>\n\n';
-        //   } else if (block.type == "table") {
-        //     //alert(tableArrayToHtml(block.data).length);
-        //     mdContent += "\n" + tableArrayToHtml(block.data.content) + "\n\n";
-        //     //console.log(tableArrayToHtml(block.data.content));
-        //   }
-        // }
-        // //alert(mdContent);
-
-        // var mdData = articleinfo + "\n\n" + mdContent;
-
-        // postData = {
-        //   content: mdData,
-        //   url: JSON.parse(document.getElementById("url").textContent).url,
-        // };
-        // axios.post(contentApiUrl, (json = postData)).then(({ data }) => {
-        //   alert("作品資料已儲存");
-        // });
       })
       .catch((error) => {
         console.log("Saving failed: ", error);
       });
   } else {
-    console.log("editorjs1存在不存在");
     editor
       .save()
       .then((outputData) => {
-        //console.log('Article data: ', outputData);
-        //var mdContent = GetMdHeader();
-        //var mdContent = frontMatters.join('\n');
-        //console.log(mdContent);
-        //console.log(frontMatters.join('\n'));
-        //mdContent = mdContent.replace('draft: ' + (!$('#cdraft').is(':checked')), 'draft: ' + $('#cdraft').val())
-        //alert(mdContent);
-        /*
-    for (var frontMatter of frontMatters) {
-      mdContent += frontMatter + '\n';
-    }
-    
-    //alert($('#cdescription').val());
-    mdContent += '---\n';
-    mdContent += 'title: "' + $('#ctitle').val() + '"\n';
-    mdContent += 'date: ' + $('#cdate').val() + '\n';
-    mdContent += 'draft: ' + $('#cdraft').val() + '\n';
-    mdContent += 'type: "' + $('#ctype').val() + '"\n';
-    mdContent += 'url: "' + $('#curl').val() + '"\n';
-    mdContent += 'image: "' + $('#cimage').val() + '"\n';
-    mdContent += 'description: "' + $('#cdescription').val().replace(/\r?\n/g, '<br>') + '"\n';
-    mdContent += 'weight: ' + ($('#cweight').val() == 'undefined' ? "" : $('#cweight').val()) + '\n';
-    mdContent += 'tag: "' + ($('#ctag').val() == 'undefined' ? "" : $('#ctag').val()) + '"\n';
-    mdContent += '---\n\n';
-    */
-
         //var articleinfo = frontMatters.join('\n');
         var articleinfo = GetMdHeader();
         var mdContent = '<div class="container-fluid blog_article p-0">\n\n';
@@ -439,7 +321,6 @@ function editorSave() {
         for (i = 0; i < outputData.blocks.length; i++) {
           var paragraphdata = "";
 
-          //alert(block.type);
           block = outputData.blocks[i];
           if (block.type == "header") {
             mdContent += "## " + block.data.text + "\n";
@@ -451,11 +332,8 @@ function editorSave() {
               mdContent += paragraphdata + "\n\n";
             }
           } else if (block.type == "hr") {
-            //alert('hr');
             mdContent += "\n---\n";
           } else if (block.type == "image") {
-            //console.log(block.data.file.url);
-            //console.log(JSON.parse(document.getElementById('url').textContent).url);
             iurl = block.data.file.url.split("/");
             mdContent +=
               '<img class="img-fluid" alt="' +
@@ -482,12 +360,9 @@ function editorSave() {
               block.data.height +
               '"></iframe>\n\n';
           } else if (block.type == "table") {
-            //alert(tableArrayToHtml(block.data).length);
             mdContent += "\n" + tableArrayToHtml(block.data.content) + "\n\n";
-            //console.log(tableArrayToHtml(block.data.content));
           }
         }
-        //alert(mdContent);
 
         var mdData = articleinfo + "\n\n" + mdContent;
 

+ 16 - 117
backstage/static/js/yo.js

@@ -53,27 +53,9 @@ function getHeader(url) {
     //const content = _.get(data, '0.content', '');
     blocks = parseMd(aa);
     oTitle = $("#ctitle").val();
-    //console.log($("#ctype").val());
     // $("#dialog-form").dialog();
     if ($("#ctype").val() == "collection") {
       $("#scat").hide();
-      console.log($("#ctype").val());
-      //   editorslider = new EditorJS({
-      //     readOnly: false,
-      //     holder: "editorjs1",
-      //     tools: {
-      //       paragraph: { inlineToolbar: false },
-      //       image: {
-      //         class: ImageTool,
-      //         config: {
-      //           endpoints: {
-      //             byFile: "/backstage/upload" + $("#curl").val(),
-      //             byUrl: "/backstage/getimage" + $("#curl").val(),
-      //           },
-      //         },
-      //       },
-      //     },
-      //   });
     } else if (
       $("#ctype").val() == "maincategories" ||
       $("#ctype").val() == "blog"
@@ -87,9 +69,6 @@ function getHeader(url) {
       ParseProductSection(contentMatters.join(""));
     }
     $("#myModal").modal();
-
-    //console.log(frontMatters);
-    //alert($('#cimage').val());
   });
 }
 
@@ -144,13 +123,14 @@ function writeMd() {
       mdContent += contentMatters.join("\n");
       var formData = new FormData();
       var imagefile = document.querySelector("#cfile");
-      //alert("The type is " + $('#ctype').val());
       if ($("#ctype").val() == "collection") {
         var imagefil2 = document.querySelector("#cnewcoverimg");
         var imagefil3 = document.querySelector("#cnewcomment");
+
         formData.append("image1", imagefile.files[0]);
         formData.append("image2", imagefil2.files[0]);
         formData.append("image3", imagefil3.files[0]);
+
         axios
           .post("/backstage/multiupload/title", formData, {
             headers: {
@@ -158,13 +138,9 @@ function writeMd() {
             },
           })
           .then(({ data }) => {
-            //$('#ccomment').val("");
-            console.log(data);
+            console.log("data", data);
             if (data.success == "1") {
               var imglinks = data.fileurl.split(";;;");
-              //mdContent = mdContent.replace($('#ccomment').val(), '/img/title/' + data.filelink.substring(data.file.url.lastIndexOf('/') + 1));
-              console.log(imglinks);
-              console.log(imagefile, imagefil2, imagefil3);
               mdContent = mdContent.replace(
                 $("#cfile").val(),
                 "/img/title/" + imglinks[0]
@@ -180,13 +156,12 @@ function writeMd() {
             } else {
               console.log("skipped");
             }
-            // try split(";;;")
 
             postData = {
               content: mdContent,
               url: editTarget,
             };
-            //console.log(mdContent);
+
             axios
               .post(contentApiUrl + editTarget, (json = postData))
               .then(({ data }) => {});
@@ -204,7 +179,6 @@ function writeMd() {
             },
           })
           .then(({ data }) => {
-            //alert($('#cfile').val());
             if (data.success == "1") {
               mdContent = mdContent.replace(
                 $("#cfile").val(),
@@ -217,7 +191,6 @@ function writeMd() {
               content: mdContent,
               url: editTarget,
             };
-            //console.log(mdContent);
             axios
               .post(contentApiUrl + editTarget, (json = postData))
               .then(({ data }) => {});
@@ -229,7 +202,7 @@ function writeMd() {
       }
     });
 }
-// md的內容解出來
+// md 的內容解出來
 function parseMd(content) {
   //var frontMatters = [];
   var blockCount;
@@ -253,51 +226,39 @@ function parseMd(content) {
       frontMatters.push(line);
 
       if (line.includes("meta_title: ")) {
-        //alert(line);
         $("#cmetattl").val(
           line.replace("meta_title: ", "").replaceAll('"', "")
         );
       } else if (line.includes("title: ")) {
         $("#ctitle").val(line.replace("title: ", "").replaceAll('"', ""));
-        //console.log($('#ctitle').val());
       }
       if (line.includes("date: ")) {
-        //alert(line);
         $("#cdate").val(line.replace("date: ", "").replaceAll('"', ""));
       }
       if (line.includes("draft: ")) {
-        //alert(line);
         $("#cdraft").val(line.replace("draft: ", "").replaceAll('"', ""));
-        //console.log($('#cdraft').val());
         $("#cdraft").removeAttr("checked");
         if ($("#cdraft").val() == "false") $("#cdraft").prop("checked", true);
-        /*
-                if($('#cdraft').val() == 'true') 
-                    $('#cdraft').removeAttr('checked');
-                else
-                    $('#cdraft').attr('checked','true');
-                    */
       }
       if (line.includes("type: ")) {
-        //alert(line);
         $("#ctype").val(line.replace("type: ", "").replaceAll('"', ""));
       }
       if (line.includes("url: ")) {
-        //alert(line);
         $("#curl").val(line.replace("url: ", "").replaceAll('"', ""));
       }
       if (line.includes("image: ")) {
-        //alert(line);
         $("#cimage").val(line.replace("image: ", "").replaceAll('"', ""));
       }
+      if (line.includes("cover_img: ")) {
+        $("#ccoverimg").val(
+          line.replace("cover_img: ", "").replaceAll('"', "")
+        );
+      }
       if (line.includes("meta_description: ")) {
-        //alert(line);
         $("#cmetadsc").val(
           line.replace("meta_description: ", "").replaceAll('"', "")
         );
       } else if (line.includes("collection_description: ")) {
-        //collections
-        //alert(line);
         $("#ccolldesc").val(
           line
             .replace("collection_description: ", "")
@@ -311,23 +272,18 @@ function parseMd(content) {
             .replaceAll('"', "")
             .replaceAll("<br>", "\r\n")
         );
-        //console.log($('#cdescription').val());
       }
       if (line.includes("weight: ")) {
-        //alert(line);
         $("#cweight").val(line.replace("weight: ", "").replaceAll('"', ""));
       }
       if (line.includes("tag: ")) {
-        //alert(line);
         $("#ctag").val(line.replace("tag: ", "").replaceAll('"', ""));
       }
       if (line.includes("tags: ")) {
-        //alert(line);
         if ($("#ctags").length > 0) {
           $("#ctags").val(line.replace("tags: ", "").replaceAll('"', ""));
           tags = $("#ctags").val().split(",");
           for (var tag of tags) {
-            //console.log(tag);
             for (var toi of tagOptionIds) {
               $("#" + toi + " option").each(function () {
                 if (this.value == tag) this.selected = true;
@@ -337,7 +293,6 @@ function parseMd(content) {
         }
       }
       if (line.includes("categories: ")) {
-        //alert(line);
         $("#ccategories").val(
           line
             .replace("categories: ", "")
@@ -346,22 +301,15 @@ function parseMd(content) {
             .replace(/\"/g, "")
         );
       }
-      /* if (line.includes('caturl: ')) {
-                //alert(line);
-                $('#ccaturl').val(line.replace('caturl: ', '').replaceAll('\"', ''));
-            } */
       if (line.includes("col1: ")) {
-        //alert(line);
         $("#ccol1").val(line.replace("col1: ", "").replaceAll('"', ""));
       }
       if (line.includes("col2: ")) {
-        //alert(line);
         $("#ccol2").val(line.replace("col2: ", "").replaceAll('"', ""));
       }
 
       //for blogs
       if (line.includes("introduction: ")) {
-        //alert(line);
         $("#cintroduction").val(
           line
             .replace("introduction: ", "")
@@ -370,7 +318,6 @@ function parseMd(content) {
         );
       }
       if (line.includes("question_box_intro: ")) {
-        //alert(line);
         $("#cquestionboxintro").val(
           line.replace("question_box_intro: ", "").replaceAll('"', "")
         );
@@ -378,65 +325,54 @@ function parseMd(content) {
 
       //for collections
       if (line.includes("banner_img_text: ")) {
-        //alert(line);
         $("#ccoverimgtxt").val(
           line.replace("banner_img_text: ", "").replaceAll('"', "")
         );
       }
 
       if (line.includes("homeowner: ")) {
-        //alert(line);
         $("#chomeowner").val(
           line.replace("homeowner: ", "").replaceAll('"', "")
         );
       }
 
       if (line.includes("size: ")) {
-        //alert(line);
         $("#csize").val(line.replace("size: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("bed_num: ")) {
-        //alert(line);
         $("#cbednum").val(line.replace("bed_num: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("house_cat: ")) {
-        //alert(line);
         $("#chousetype").val(
           line.replace("house_cat: ", "").replaceAll('"', "")
         );
       }
 
       if (line.includes("designer: ")) {
-        //alert(line);
         $("#cdesigner").val(line.replace("designer: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("space: ")) {
-        //alert(line);
         $("#cspace").val(line.replace("space: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("loc: ")) {
-        //alert(line);
         $("#cloc").val(line.replace("loc: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("budget: ")) {
-        //alert(line);
         $("#cbudget").val(line.replace("budget: ", "").replaceAll('"', ""));
       }
 
       if (line.includes("construction: ")) {
-        //alert(line);
         $("#cconstruction").val(
           line.replace("construction: ", "").replaceAll('"', "")
         );
       }
 
       if (line.includes("collection_name: ")) {
-        //alert(line);
         $("#ccollname").val(
           line.replace("collection_name: ", "").replaceAll('"', "")
         );
@@ -451,24 +387,18 @@ function parseMd(content) {
         let left = slider[0].value.lastIndexOf("[");
         let right = slider[0].value.lastIndexOf("]");
         let stringList = slider[0].value.substr(left + 1, right - 1);
-
-        console.log("stringList", stringList);
-
         let stringArr = stringList.split(",");
-        console.log("stringArr", stringArr);
-
         let imgArr = [];
         let textArr = [];
+
         // 擷取字串後存入陣列
         stringArr.map((e) => {
           if (e.includes("slide_img")) {
             e = e.substr(11);
             imgArr.push(e);
-            console.log("if slide_img :", e);
           } else {
             e = e.substr(11);
             e = e.substring(0, e.length - 1);
-            console.log("else slide_text :", e);
             textArr.push(e);
           }
         });
@@ -478,15 +408,13 @@ function parseMd(content) {
           for (let index = 0; index < imgArr.length; index++) {
             const element = imgArr[index];
             captionValue = textArr[index];
-            
+
             tmpsrcImg =
               BHOUSE_SERVER +
               JSON.parse(document.getElementById("url").textContent).url +
               "/" +
               element;
-  
-            console.log("tmpsrcImg", tmpsrcImg);
-  
+
             editorBlocks1.push({
               type: "image",
               data: {
@@ -497,15 +425,12 @@ function parseMd(content) {
               },
             });
           }
-          console.log("imgArr", imgArr);
-          console.log("textArr", textArr);
         }
         //$('#ccollslider').val(line.replace('collection_slider: ', '').replaceAll('\"', ''));
       }
 
       if (line.includes("comment: ")) {
-        //alert(line);
-        //$('#ccomment').val(line.replace('comment: ', '').replaceAll('\"', ''));
+        $("#ccomment").val(line.replace("comment: ", "").replaceAll('"', ""));
       }
 
       // back to normal
@@ -515,10 +440,6 @@ function parseMd(content) {
       continue;
     }
     contentMatters.push(line);
-    /*         if (line.toString().trim() == "") {
-                    rblocks.push({ 'type': 'br', 'text': line });
-                    continue;
-                } */
 
     if (line.includes("---")) {
       rblocks.push({ type: "mt5", text: line });
@@ -575,7 +496,7 @@ function parseMd(content) {
       console.log("Empty paragraph -- skipped.");
     }
   }
-  console.log(frontMatters);
+  console.log("frontMatters", frontMatters);
   return rblocks;
 }
 
@@ -662,11 +583,10 @@ function GetMdHeader(result = []) {
       let collection_slider_value = result.filter((e) =>
         e.match("collection_slider")
       );
-      console.log("collection_slider_value", collection_slider_value);
       rContent += `${collection_slider_value[0]}\n`;
     }
 
-    console.log(rContent);
+    console.log("rContent", rContent);
   } else if (
     $("#ctype").val() == "blog" ||
     $("#ctype").val() == "maincategories"
@@ -691,11 +611,8 @@ function GetMdHeader(result = []) {
       $("#cintroduction").val().replace(/\r?\n/g, "<br>") +
       '"\n';
     rContent += 'question_box_intro: "' + $("#cquestionboxintro").val() + '"\n';
-    console.log($("#cdescription").val());
   }
   rContent += "---\n";
-  //alert(rContent);
-  // rContent.replaceAll('"',"&apos;"); # replace " with '' (two single quotes)
 
   return rContent;
 }
@@ -755,7 +672,6 @@ function tableArrayToHtml(tableArray) {
     }
     tbl.appendChild(tr);
   }
-  //alert(tbl.outerHTML.toString());
   return tbl.outerHTML.toString();
 }
 
@@ -789,7 +705,6 @@ function ParseProductSection(inContent) {
     for (i = 0; i < imgnodes.length; i++) {
       var tmpsrc, tmpw, tmph, ampimg;
       if (imgnodes[i].nodeName == "IMG") {
-        //alert(imgnodes[i].nodeName);
         ampimg = imgnodes[i].outerHTML;
         tmpsrc = ampimg.substr(
           ampimg.indexOf('src="') + 5,
@@ -797,7 +712,6 @@ function ParseProductSection(inContent) {
             ampimg.indexOf('src="') -
             5
         );
-        //alert(tmpsrc);
         tmpw = ampimg.substr(
           ampimg.indexOf('width="') + 7,
           ampimg.indexOf('"', ampimg.indexOf('width="') + 7) -
@@ -839,7 +753,6 @@ function ParseProductSection(inContent) {
         } */
   //editor.api.blocks.render(editorBlocks);
   $("#editorjs")[0].innerHTML = "";
-  //alert(editorBlocks);
   editor = new EditorJS({
     readOnly: false,
     holder: "editorjs",
@@ -857,19 +770,16 @@ function ParseProductSection(inContent) {
     },
     data: { blocks: editorBlocks },
     onReady: function () {
-      //alert(editor.blocks.getBlocksCount());
       //saveButton.click();
     },
     onChange: function (api, block) {
       //$('#cimage')[0].val();
-      //console.log('something changed', block);
     },
   });
 
   //類別
   Object.entries(SwfType).forEach(([key, value]) => {
     if ($("#ctype").val() == key) {
-      //alert($("#ctype").val());
       $("#swfDropdown").val($("#ctype").val());
     }
   });
@@ -884,7 +794,6 @@ function ParseProductSection(inContent) {
         .replaceAll("</b>", "")
     );
   }
-  //alert(editorBlocks);
   //其他
   $("#swfPrice").val("");
   $("#swfColor").val("");
@@ -911,7 +820,6 @@ function ParseProductSection(inContent) {
           $("#swfMat").val(onodes[i].innerHTML.replace("材質 : ", "").trim());
         if (onodes[i].innerHTML.trim().indexOf("備註 : ") >= 0)
           $("#swfMemo").val(onodes[i].innerHTML.replace("備註 : ", "").trim());
-        //alert(nodes[i].innerHTML);
       }
     }
   }
@@ -919,7 +827,6 @@ function ParseProductSection(inContent) {
   //處理規格圖片
   if ($("[class='spec']", aa).length > 0) {
     snodes = $("[class='spec']", aa)[0].childNodes;
-    //alert(snodes[0].innerHTML);
     for (i = 0; i < snodes.length; i++) {
       var tmpsrc, tmpw, tmph, ampimg;
       if (snodes[i].nodeName == "AMP-IMG") {
@@ -1099,12 +1006,9 @@ function GenProductSection(mimg, specimg) {
   firstimg = true;
   for (i = 0; i < mimg.blocks.length; i++) {
     block = mimg.blocks[i];
-    console.log(block.data);
 
-    console.log(block.data.file.url);
     if (block.type == "image") {
       iurl = block.data.file.url.split("/");
-      console.log("img/" + iurl[iurl.length - 1]);
 
       if (iurl[iurl.length - 1] != "logo2.png") {
         if (firstimg) {
@@ -1126,7 +1030,6 @@ function GenProductSection(mimg, specimg) {
 
   previmgstr = "";
   for (i = 0; i < mimg.blocks.length; i++) {
-    //alert(block.type);
     block = mimg.blocks[i];
     if (block.type == "image") {
       iurl = block.data.file.url.split("/");
@@ -1155,7 +1058,6 @@ function GenProductSection(mimg, specimg) {
 
   specimgstr = "";
   for (i = 0; i < specimg.blocks.length; i++) {
-    //alert(block.type);
     block = specimg.blocks[i];
     if (block.type == "image") {
       iurl = block.data.file.url.split("/");
@@ -1194,8 +1096,5 @@ class MDParser {
     this.description = "";
     this.weight = 1;
     this.tag = [];
-    for (var line of MDtext.split("\n")) {
-      //console.log(line);
-    }
   }
 }

+ 6 - 7
backstage/static/js/yocopy.js

@@ -139,7 +139,7 @@ function writeMd() {
       $("#ccol1").val(data);
     })
     .finally(() => {
-      console.log('ctype',$("#ctype").val());
+      console.log("ctype", $("#ctype").val());
       if (window.location.pathname == "/backstage/collections") {
         mdContent = setContent();
         // console.log('call setContent()');
@@ -490,10 +490,9 @@ function setContent() {
     .catch((error) => {
       console.log("Saving failed: ", error);
     });
-
 }
 
-function GetMdHeader(data=[]) {
+function GetMdHeader(data = []) {
   rContent = "";
   rContent += "---\n";
   rContent += 'meta_title: "' + $("#cmetattl").val() + '"\n';
@@ -521,11 +520,11 @@ function GetMdHeader(data=[]) {
     }
     rContent += 'tags: "' + tags.join(",") + '"\n';
     //rContent += 'tags: "' + ($('#ctags').val() == 'undefined' ? "" : $('#ctags').val()) + '"\n';
-    console.log('outputData', JSON.stringify(data, null, 2));
-    for(i = 0; i < data.blocks.length; i++){
+    console.log("outputData", JSON.stringify(data, null, 2));
+    for (i = 0; i < data.blocks.length; i++) {
       block = data.blocks[i];
-      iurl = block.data.file.url.split('/');
-      console.log('img/' + iurl[iurl.length - 1]);
+      iurl = block.data.file.url.split("/");
+      console.log("img/" + iurl[iurl.length - 1]);
     }
     // rContent += 'collection_slider: ['+collection_slider_img+']\n';
     rContent += 'banner_img_text: "' + $("#ccoverimgtxt").val() + '"\n';

+ 5 - 5
backstage/templates/blogs.html

@@ -32,7 +32,7 @@
 {% block modal_body %}
 <form action="{{ url_for('blogs.create') }}" method="POST" enctype="multipart/form-data">
   <div class="form-group">
-    {{ form.title.label(class="form-control-label modal__label mb-1") }} <span class="text-danger">(建議字數: 15字內)</span>
+    {{ form.title.label(class="form-control-label modal__label mb-1") }} <span class="text-danger">(建議字數:15 字內)</span>
     {{ form.title(class="form-control form-control-lg") }}
     {{ form.image.label(class="form-control-label modal__label mt-3 mb-1") }} <span class="text-danger">(建議尺寸/比例:
       寬2664px * 高956px)</span>
@@ -65,12 +65,12 @@
                 <h4>標題</h4>
               </td>
               <td><input class="form-control" id="ctitle" type="text" />
-                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
               </td>
             </tr>
             <tr>
               <td>
-                <h4>Meta標題</h4>
+                <h4>Meta 標題</h4>
               </td>
               <td><input class="form-control" id="cmetattl" type="text" />
               </td>
@@ -84,7 +84,7 @@
             </tr>
             <tr>
               <td>
-                <h4>Meta說明</h4>
+                <h4>Meta 說明</h4>
               </td>
               <td><input class="form-control" id="cmetadsc" type="text" />
               </td>
@@ -104,7 +104,7 @@
                 <h4>文章分類</h4>
               </td>
               <td><textarea class="form-control" rows="1" id="ccategories"></textarea>
-                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
               </td>
             </tr>
             <tr>

+ 11 - 9
backstage/templates/collections.html

@@ -36,7 +36,7 @@
 {% block modal_body %}
 <form action="{{ url_for('collections.create') }}" method="POST" enctype="multipart/form-data">
   <div class="form-group">
-    {{ form.title.label(class="form-control-label modal__label mb-1") }} <span class="text-danger">(建議字數: 15字內)</span>
+    {{ form.title.label(class="form-control-label modal__label mb-1") }} <span class="text-danger">(建議字數:15 字內)</span>
     {{ form.title(class="form-control form-control-lg") }}
 
     {{ form.description.label(class="form-control-label modal__label mt-3 mb-1") }} <span class="text-danger">(建議字數:
@@ -120,19 +120,19 @@
                 <h4>標題</h4>
               </td>
               <td><input class="form-control" id="ctitle" type="text" />
-                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
               </td>
             </tr>
             <tr>
               <td>
-                <h4>Meta標題</h4>
+                <h4>Meta 標題</h4>
               </td>
               <td><input class="form-control" id="cmetattl" type="text" />
               </td>
             </tr>
             <tr>
               <td>
-                <h4>Meta說明</h4>
+                <h4>Meta 說明</h4>
               </td>
               <td><input class="form-control" id="cmetadsc" type="text" />
               </td>
@@ -142,7 +142,7 @@
                 <h4>描述</h4>
               </td>
               <td><textarea class="form-control" rows="3" id="cdescription"></textarea>
-                <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+                <div class="mt-1 text-danger">(建議字數:50 字內)</div>
               </td>
             </tr>
             <tr>
@@ -172,7 +172,7 @@
               </td>
               <td>
                 <input class="form-control" id="cfile" type="file" />
-                <div class="mt-1 text-danger">(建議尺寸/比例: 寬2048px * 高1365px)</div>
+                <div class="mt-1 text-danger">(建議尺寸/比例:寬 2048px * 高 1365px)</div>
               </td>
             </tr>
             <tr>
@@ -188,7 +188,7 @@
               </td>
               <td>
                 <input class="form-control" id="cnewcoverimg" type="file" />
-                <div class="mt-1 text-danger">(建議尺寸/比例: 寬____px * 高____px)</div>
+                <div class="mt-1 text-danger">(建議尺寸/比例:寬 ____px * 高 ____px)</div>
               </td>
             </tr>
             <tr>
@@ -221,7 +221,9 @@
                   <option value="1房">1房</option>
                   <option value="2房">2房</option>
                   <option value="3房">3房</option>
-                  <option value="4房以上">4房以上</option>
+                  <option value="兩房一廳">兩房一廳</option>
+                  <option value="三房兩廳">三房兩廳</option>
+                  <option value="四房兩廳">四房兩廳</option>
                 </select></td>
             </tr>
             <tr>
@@ -304,7 +306,7 @@
               </td>
               <td>
                 <input class="form-control" id="cnewcomment" type="file" />
-                <div class="mt-1 text-danger">(建議尺寸/比例: 寬2048px * 高1365px)</div>
+                <div class="mt-1 text-danger">(建議尺寸/比例:寬 2048px * 高 1365px)</div>
               </td>
             </tr>
           </tbody>

+ 18 - 17
backstage/templates/editor.html

@@ -4,7 +4,7 @@
   <div class="ui two column very relaxed grid">
     <!-- <div class="column column__edit"> -->
     <div class="container col-sm-12 col-md-8">
-      <button id='submit_button' class="btn__submit mb-3" onclick="editorSave();"><b>編輯完成</b></button>
+      <button id='submit_button' class="btn__submit mb-3" onclick="editorSave()"><b>編輯完成</b></button>
       <h3 style='display: none;' class="h3 column__h3"><i class="fas fa-user-edit mr-1 mb-2"></i> 作品編輯</h3>
       <table class="table table-bordered">
         <tbody>
@@ -13,7 +13,7 @@
               <h4>標題</h4>
             </td>
             <td><input class="form-control" id="ctitle" type="text" />
-              <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+              <div class="mt-1 text-danger">(建議字數:15 字內)</div>
             </td>
           </tr>
           <tr style='display: none;'>
@@ -21,7 +21,7 @@
               <h4>描述</h4>
             </td>
             <td><textarea class="form-control" rows="3" id="cdescription"></textarea>
-              <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+              <div class="mt-1 text-danger">(建議字數:50 字內)</div>
             </td>
           </tr>
         </tbody>
@@ -34,6 +34,7 @@
         <input id="ctype" type="text" /><br />
         <input id="curl" type="text" /><br />
         <input id="cimage" type="text" /><br />
+        <input id="cnewcoverimg" type="text" /><br />
         <input id="cweight" type="text" /><br />
         <input id="ctag" type="text" /><br />
         <input id="ctags" type="text" /><br />
@@ -59,7 +60,7 @@
       <h3 class="h3 column__h3"><i class="fa fa-file-text mr-2 mb-2"></i> 內容編輯</h3>
       <!--<p class="card">
         <div class="card-body">
-          標題 <span class="mt-1 text-danger">(建議字數: 15字內)</span>
+          標題 <span class="mt-1 text-danger">(建議字數:15 字內)</span>
           <div><input class="form-control" id="ctitle" type="text" /></div>
         </div>
       </p>
@@ -70,23 +71,23 @@
         </div>
       </p>-->
       <p class="card">
-        <div class="card-body">
-          Meta標題
-          <div><input class="form-control" id="cmetattl" type="text" /></div>
-        </div>
+      <div class="card-body">
+        Meta 標題
+        <div><input class="form-control" id="cmetattl" type="text" /></div>
+      </div>
       </p>
       <p class="card">
-        <div class="card-body">
-          Meta說明
-          <div><input class="form-control" id="cmetadsc" type="text" /></div>
-        </div>
+      <div class="card-body">
+        Meta 說明
+        <div><input class="form-control" id="cmetadsc" type="text" /></div>
+      </div>
       </p>
       {% block extras %}{% endblock %}
       <p class="card">
-        <div class="card-body">
-          文章內容
-          <div id="editorjs"></div>
-        </div>
+      <div class="card-body">
+        文章內容
+        <div id="editorjs"></div>
+      </div>
       </p>
       <div id="editor_block"><span><button class="btn__arTitle mb-2"
             id="add_title_button">+標題</button></span><span><button class="btn__arTitle mb-2"
@@ -97,7 +98,7 @@
       </div>
       <br />
       <div>
-        <button id='submit_button' class="btn__submit mb-3" onclick="editorSave();"><b>編輯完成</b></button>
+        <button id='submit_button' class="btn__submit mb-3" onclick="editorSave()"><b>編輯完成</b></button>
       </div>
     </div>
     <!-- <div class="column column__preview">

+ 3 - 3
backstage/templates/editorcollection.html

@@ -16,9 +16,9 @@
   <input id="cdesigner" type="text" /><br />
   <input id="ccolldesc" type="text" /><br />
   <input id="ccoverimg" type="text" /><br />
-  <input id="cnewcoverimg" type="text" value="" /><br />
-  <input id="cnewfile" type="text" value="" /><br />
-  <input id="cnewcomment" type="text" value="" /><br />
+  <input id="cnewcoverimg" type="text" /><br />
+  <input id="cnewfile" type="text" /><br />
+  <input id="cnewcomment" type="text" /><br />
   <input id="chousetype" type="text" /><br />
   <input id="ctags" type="text" /><br />
 </div>

+ 0 - 9
backstage/templates/frequently_asked_questions.html

@@ -117,7 +117,6 @@
     editor = $("#input_a").richText();
     axios.get(contentApiUrl + '/frequently_asked_questions').then(({ data }) => {
       parseMd(data[0]['content']);
-      //alert(contentMatters.join(''));
       faqContent = $.parseHTML(contentMatters.join(''));
       //處理圖片
       if ($("[id='myAccordion']", faqContent).length > 0) {
@@ -129,9 +128,7 @@
             for (j = 0; j < fnodes[i].childNodes.length; j++) {
               if (fnodes[i].childNodes[j].nodeName == "DIV") {
                 if (k == 0) {
-                  console.log('fnodes[i].childNodes[j]',fnodes[i].childNodes[j].childNodes[j].childNodes[j].childNodes[j]);
                   if (fnodes[i].childNodes[j].childNodes[j].childNodes[j].childNodes[j].nodeName == "SPAN") {
-                    console.log('SPAN');
                     qa.push({ q: fnodes[i].childNodes[j].childNodes[j].childNodes[j].childNodes[j].innerText.trim() });
                     k++;
                   }
@@ -140,7 +137,6 @@
                 }
                 else {
                   qa[qa.length - 1].a = fnodes[i].childNodes[j].innerHTML.trim();
-                  console.log('qa[qa.length - 1].a', qa[qa.length - 1].a);
                 }
                 /* if (fnodes[i].childNodes[j].className == "question") {
                     //alert(fnodes[i].childNodes[j].childNodes[1].nodeValue.trim());
@@ -262,10 +258,7 @@
     qa = [];
     for (i = 0; i < $('#qaData1 .qa_q').length; i++) {
       qa.push({ q: $('#qaData1 .qa_q')[i].childNodes[0].innerHTML, a: $('#qaData1 .qa_a')[i].childNodes[0].innerHTML });
-      console.log("a: $('#qaData1 .qa_a')[i]", $('#qaData1 .qa_a')[i].childNodes[0].innerText);
-      console.log("a: $('#qaData1 .qa_a')[i]", $('#qaData1 .qa_a')[i].childNodes[0].innerHTML);
       let test = document.querySelectorAll('#qaData1 .qa_a');
-      console.log('test', JSON.stringify(test, null, 2));
     }
     newFaqItemContent = "";
     for (i = 0; i < qa.length; i++) {
@@ -288,8 +281,6 @@
     }
     $("[id='myAccordion']", faqContent).html(newFaqItemContent);
     mdContent = frontMatters.join('\n') + '\n' + faqContent[0].outerHTML;
-    console.log('faqContent[0].outerHTML', faqContent[0].outerHTML);
-    console.log('mdContent',mdContent);
     postData = {
       content: mdContent,
       url: $('#curl').val()

+ 3 - 3
backstage/templates/news.html

@@ -65,14 +65,14 @@
             </tr>
             <tr>
               <td>
-                <h4>Meta標題</h4>
+                <h4>Meta 標題</h4>
               </td>
               <td><input class="form-control" id="cmetattl" type="text" />
               </td>
             </tr>
             <tr>
               <td>
-                <h4>Meta說明</h4>
+                <h4>Meta 說明</h4>
               </td>
               <td><input class="form-control" id="cmetadsc" type="text" />
               </td>
@@ -92,7 +92,7 @@
                 <h4>文章分類</h4>
               </td>
               <td><textarea class="form-control" rows="1" id="ccategories"></textarea>
-                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
               </td>
             </tr>
             <tr>

+ 5 - 5
backstage/templates/solid_wood_furniture.html

@@ -41,7 +41,7 @@
                 </td>
                 <td>
                     <input class="form-control" id="newSwfName" type="text" />
-                    <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                    <div class="mt-1 text-danger">(建議字數:15 字內)</div>
                 </td>
             </tr>
             <tr>
@@ -107,19 +107,19 @@
                             </td>
                             <td>
                                 <input class="form-control" id="ctitle" type="text" />
-                                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
                             </td>
                         </tr>
                         <tr>
                             <td>
-                              <h4>Meta標題</h4>
+                              <h4>Meta 標題</h4>
                             </td>
                             <td><input class="form-control" id="cmetattl" type="text" />
                             </td>
                           </tr>
                           <tr>
                             <td>
-                              <h4>Meta說明</h4>
+                              <h4>Meta 說明</h4>
                             </td>
                             <td><input class="form-control" id="cmetadsc" type="text" />
                             </td>
@@ -136,7 +136,7 @@
                             </td>
                             <td>
                                 <textarea class="form-control" rows="3" id="swfDesc" type="text" style="width: 100%;"></textarea>
-                                <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+                                <div class="mt-1 text-danger">(建議字數:50 字內)</div>
                             </td>
                         </tr>
                         <tr>

+ 5 - 5
backstage/templates/system_furniture.html

@@ -41,7 +41,7 @@
                 </td>
                 <td>
                     <input class="form-control" id="newSwfName" type="text" />
-                    <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                    <div class="mt-1 text-danger">(建議字數:15 字內)</div>
                 </td>
             </tr>
             <tr>
@@ -107,19 +107,19 @@
                             </td>
                             <td>
                                 <input class="form-control" id="ctitle" type="text" />
-                                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
                             </td>
                         </tr>
                         <tr>
                             <td>
-                              <h4>Meta標題</h4>
+                              <h4>Meta 標題</h4>
                             </td>
                             <td><input class="form-control" id="cmetattl" type="text" />
                             </td>
                           </tr>
                           <tr>
                             <td>
-                              <h4>Meta說明</h4>
+                              <h4>Meta 說明</h4>
                             </td>
                             <td><input class="form-control" id="cmetadsc" type="text" />
                             </td>
@@ -136,7 +136,7 @@
                             </td>
                             <td>
                                 <textarea class="form-control" rows="3" id="swfDesc" type="text" style="width: 100%;"></textarea>
-                                <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+                                <div class="mt-1 text-danger">(建議字數:50 字內)</div>
                             </td>
                         </tr>
                         <tr>

+ 4 - 4
backstage/templates/tables/editor_table.html

@@ -42,7 +42,7 @@
                 <h4>標題</h4>
               </td>
               <td><input class="form-control" id="ctitle" type="text" />
-                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                <div class="mt-1 text-danger">(建議字數:15 字內)</div>
               </td>
             </tr>
             <tr>
@@ -51,7 +51,7 @@
               </td>
               <td>
                 <input class="form-control" id="cfile" type="file" />
-                <div class="mt-1 text-danger">(建議尺寸/比例: 寬2048px * 高1365px)</div>
+                <div class="mt-1 text-danger">(建議尺寸/比例:寬 2048px * 高 1365px)</div>
               </td>
             </tr>
             <tr id='sdesc'>
@@ -59,7 +59,7 @@
                 <h4>描述</h4>
               </td>
               <td><textarea class="form-control" rows="3" id="cdescription"></textarea>
-                <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+                <div class="mt-1 text-danger">(建議字數:50 字內)</div>
               </td>
             </tr>
             <tr>
@@ -68,7 +68,7 @@
                   <h4>文章分類</h4>
                 </td>
                 <td><textarea class="form-control" rows="1" id="ccategories"></textarea>
-                  <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                  <div class="mt-1 text-danger">(建議字數:15 字內)</div>
                 </td>
               </tr>
               <tr>

BIN
backstage/upload/0630/img/029ecd7ed1844144a7946809f8c47a20.webp


BIN
backstage/upload/0630/img/0362fcce422648d88a79fb722b3dec36.webp


BIN
backstage/upload/0630/img/08a0d18b15d94b86ac7bca9124c28294.webp


BIN
backstage/upload/0630/img/0911cbeec0534e38841dcb472bc1440c.webp


BIN
backstage/upload/0630/img/0cb540a14da34e5abffee128ed8ea239.webp


BIN
backstage/upload/0630/img/0d67ef513066441487c3b3ba1dcee426.webp


BIN
backstage/upload/0630/img/1063b8475290452c84b08418b6e60141.webp


BIN
backstage/upload/0630/img/19b915f96a70420cbd956c862c8b44bc.webp


BIN
backstage/upload/0630/img/19bc97fedc0040d8a35173e49a96b833.webp


BIN
backstage/upload/0630/img/1c2325c1f42e4b0aa035451e6494887b.webp


BIN
backstage/upload/0630/img/1ce45e2da80b459592d7e677a3249c2a.webp


BIN
backstage/upload/0630/img/2492fa2bdaa342708fdc3a59fb8e433e.webp


BIN
backstage/upload/0630/img/24e2967a680b4fad9477fc1943fd581b.webp


BIN
backstage/upload/0630/img/2862e38570c94d0f939c045cb96d2ba7.webp


BIN
backstage/upload/0630/img/2a8ab360ee694d6e9f490bea4791882a.webp


BIN
backstage/upload/0630/img/2ec62de4571f475f967b7c00a6adff5c.webp


BIN
backstage/upload/0630/img/34499917e6bb4cc0b6f8231b4294a65b.webp


BIN
backstage/upload/0630/img/37ce90e400da4620a0845930e51be7ea.webp


BIN
backstage/upload/0630/img/38723b121d494013a25ce502703aa26d.webp


BIN
backstage/upload/0630/img/3c9e56d761be4d5f9cd66a6ae93d90c0.webp


BIN
backstage/upload/0630/img/3de90f3b5dec49f091b99a27cff93b74.webp


BIN
backstage/upload/0630/img/412c120d8e3744e89a5aeadffa7511b5.webp


BIN
backstage/upload/0630/img/4152c12a8d2448b5a6ddc6235e9e2b44.webp


BIN
backstage/upload/0630/img/41c996c3c2f946cb8c374bfc508c10d5.webp


BIN
backstage/upload/0630/img/42ff2eb495ce4c798630226a68e4b181.webp


BIN
backstage/upload/0630/img/43352c7c4be5439ab035521221951bdd.webp


BIN
backstage/upload/0630/img/43f5834e4c6149359863d9cf58499692.webp


BIN
backstage/upload/0630/img/46ecb8dabb08456db1617133630696a9.webp


BIN
backstage/upload/0630/img/4818d2e6192c448aa24224d3bee11808.webp


BIN
backstage/upload/0630/img/4a21f783141248ceab2d21eb602c4831.webp


BIN
backstage/upload/0630/img/4afa9b110b664e489e126c95a14e9f35.webp


BIN
backstage/upload/0630/img/4c2ab585d7cd4070b2d608515a9ad125.webp


BIN
backstage/upload/0630/img/5623b32cd5364ccf8eca3193c3e06ad2.webp


BIN
backstage/upload/0630/img/56699103b6f14ce1908701aee4aca6af.webp


BIN
backstage/upload/0630/img/5b784d8a5a044446bdb77885bafbaf68.webp


BIN
backstage/upload/0630/img/5c2ad2552f24469384dcb071d0205453.webp


BIN
backstage/upload/0630/img/61de115f146048858c0075294f79d54c.webp


BIN
backstage/upload/0630/img/62893cdadaf44ddbaa76e73b7a72dc2a.webp


BIN
backstage/upload/0630/img/67bc5dc0050540e7a8facc693cf3b8ad.webp


BIN
backstage/upload/0630/img/6961d2dc8cf84eaaa3bfa7d006ca1f83.webp


BIN
backstage/upload/0630/img/6979c874647245ad816bed397fe52efb.webp


BIN
backstage/upload/0630/img/6ac5bf493bed4e1b869216b00964abbf.webp


BIN
backstage/upload/0630/img/6b9a452e1b7544d8b549ede6d801c1ef.webp


BIN
backstage/upload/0630/img/6f97bdcd47334a0bb0d74357ae92c1ba.webp


BIN
backstage/upload/0630/img/71598a4af1d243a8bb32b48c0800de53.webp


BIN
backstage/upload/0630/img/72d4808cc48946e8910d814fcfa92593.webp


BIN
backstage/upload/0630/img/7338c4b73c2e415fa991803c910fb14a.webp


BIN
backstage/upload/0630/img/734c11029d034c4395739f0e4d4b9cdf.webp


BIN
backstage/upload/0630/img/74ce02f272da49508652c828ad4ff63d.webp


BIN
backstage/upload/0630/img/755c28d3f73c42f499e801959e39fe8c.webp


BIN
backstage/upload/0630/img/7ca6215b803345238123e2071ab4e02b.webp


BIN
backstage/upload/0630/img/7ccbcdde72fc46c3b0abfa71f2bcda7b.webp


BIN
backstage/upload/0630/img/7cf372e6f6bb48ea9ff70ad269bf50f7.webp


BIN
backstage/upload/0630/img/807c298a219a4434b298ceb65b70e7d4.webp


BIN
backstage/upload/0630/img/80a1e9314f1c4dcd93bc63d113386af6.webp


BIN
backstage/upload/0630/img/85579b4b725d4886bb4eb2a6c00f9042.webp


BIN
backstage/upload/0630/img/86479c348ada4cd3910200e55bfd97b4.webp


BIN
backstage/upload/0630/img/8681659b950e4b8fa2d4230f3fbbedd4.webp


BIN
backstage/upload/0630/img/8f8d0b589d3342658376b9a764580577.webp


BIN
backstage/upload/0630/img/900a21c40f6c41eeacf8a339c46cb810.webp


BIN
backstage/upload/0630/img/9164b1d12709411f9824e4880959fc50.webp


BIN
backstage/upload/0630/img/9172a5cf4f124c3ba2ee6d42cc66e611.webp


BIN
backstage/upload/0630/img/91dd9ebb3767482a9af133e0930dd087.webp


BIN
backstage/upload/0630/img/95234593c84b41aabe45df6f63bb9247.webp


BIN
backstage/upload/0630/img/95cbd19bf8ef4209aafe15f4665cf6d1.webp


BIN
backstage/upload/0630/img/97718feb6ab946dfa4d0bcd782787784.webp


BIN
backstage/upload/0630/img/99660c928fcd4c57a03d1c9fb6130bdf.webp


BIN
backstage/upload/0630/img/9b15a0fe5fd44c4ab9c7a0a729984eed.webp


BIN
backstage/upload/0630/img/a21cc658ce6247f6b09d4709212230dd.webp


BIN
backstage/upload/0630/img/a469a4bc52944f93b070b45c79c511c6.webp


BIN
backstage/upload/0630/img/a4e0b625c28a488e9d4d1c154de5d51c.webp


BIN
backstage/upload/0630/img/ab564ac4191640998ef55f4031457293.webp


BIN
backstage/upload/0630/img/abac59be84b449748b9b7b326d8f15c8.webp


BIN
backstage/upload/0630/img/acc42726261f472e916f78a72cd4ffde.webp


BIN
backstage/upload/0630/img/ae0f8e77b6c64ee98308d5d85ee9c754.webp


BIN
backstage/upload/0630/img/b07c414156974570bd2805161c6e8b7a.webp


BIN
backstage/upload/0630/img/b57e56ab2a8e4d7c823495a53760feda.webp


BIN
backstage/upload/0630/img/b58047a1b3134462b14376f24d6e2579.webp


BIN
backstage/upload/0630/img/bf7fa04e696748479ddbeed3d2aaa923.webp


BIN
backstage/upload/0630/img/c124673cb3734a149ae931466c55b0b7.webp


BIN
backstage/upload/0630/img/c34a7a695ebc4492a549a3409c5e6204.webp


BIN
backstage/upload/0630/img/c3d942d259f94b60b0bbd8b80eb3b98e.webp


BIN
backstage/upload/0630/img/c4292749d0cc47fb829aea342086575f.webp


BIN
backstage/upload/0630/img/c88e2998a8da41ae98e5a6c355afa84e.webp


BIN
backstage/upload/0630/img/c9600d5af84541de8894f18c9a3db975.webp


BIN
backstage/upload/0630/img/ca9f962ab22c45f89c145272337dd2c7.webp


Some files were not shown because too many files changed in this diff