From 6a93d3d7c3c3e61339bde84c30056cad08f21e6c Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 07 Jul 2022 17:00:52 +0800
Subject: [PATCH] fix template static path

---
 src/main/java/com/xcong/farmer/cms/core/template/Configuration.java |    1 +
 src/main/java/com/xcong/farmer/cms/core/node/Template.java          |    4 ++--
 src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java          |   18 ++++++++++++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
index 27d74e6..c85e75e 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -7,6 +7,7 @@
 import com.xcong.farmer.cms.core.handler.DataParserHandler;
 import com.xcong.farmer.cms.core.tag.TagsEnum;
 import com.xcong.farmer.cms.core.template.Configuration;
+import com.xcong.farmer.cms.core.template.TemplateConfiguration;
 import groovy.lang.Binding;
 import groovy.lang.GroovyShell;
 import org.apache.commons.text.StringSubstitutor;
@@ -79,17 +80,30 @@
                 this.element.attr("src", STATIC_URL + src);
             }
         }
+
+        if ("link".equals(this.element.tagName())) {
+            String src = this.element.attr("href");
+            if (StrUtil.isNotBlank(STATIC_URL)) {
+                this.element.attr("href", STATIC_URL + src);
+            }
+        }
+
+        if ("script".equals(this.element.tagName())) {
+            String src = this.element.attr("src");
+            if (StrUtil.isNotBlank(STATIC_URL)) {
+                this.element.attr("src", STATIC_URL + src);
+            }
+        }
     }
 
     public void parser() {
+        staticPath();
         // 判断是否为最小节点,如果是且没有特殊标签,则跳过清空
         if (!isNeedEmpty()) {
             return;
         }
 
         this.element.empty();
-
-        staticPath();
         Attributes attributes = this.element.attributes();
         if (attributes.isEmpty()) {
             return;
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/Template.java b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
index 9e2e5b9..78e6476 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/Template.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/Template.java
@@ -77,7 +77,7 @@
     }
 
     public void parser() {
-        Elements children = document.body().children();
+        Elements children = document.children();
         if (CollUtil.isNotEmpty(children)) {
             for (Element child : children) {
                 PartNode partNode = new PartNode(child, this.system);
@@ -96,7 +96,7 @@
         for (PartNode partNode : partNodes) {
             sb.append(partNode.getHtml());
         }
-        document.body().empty().html(sb.toString());
+        document = Jsoup.parse(sb.toString());
         String outPath = path(outputPath);
 
         String html = document.html();
diff --git a/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
index 897392b..766240b 100644
--- a/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
+++ b/src/main/java/com/xcong/farmer/cms/core/template/Configuration.java
@@ -20,6 +20,7 @@
         Configuration.templatePath = templatePath;
         Configuration.outputPath = outputPath;
         Configuration.BASE_URL = baseUrl;
+        Configuration.STATIC_URL = staticUrl;
     }
 
     public static Map<String, String> templateCode = new HashMap<>();

--
Gitblit v1.9.1