deason 3 years ago
parent
commit
85a5c57154

+ 3 - 1
examcloud-support/src/main/java/cn/com/qmth/examcloud/support/handler/richtext2/BlockType.java

@@ -11,7 +11,9 @@ public enum BlockType {
 
     audio("音频"),
 
-    video("视频");
+    video("视频"),
+
+    link("链接");
 
     private String description;
 

+ 20 - 3
examcloud-support/src/main/java/cn/com/qmth/examcloud/support/handler/richtext2/RichTextConverter.java

@@ -114,6 +114,10 @@ public class RichTextConverter implements TagConstant {
                 } else if (TAG_A.equals(node.nodeName())) {
                     // 处理音频
                     processAudio(element, blocks);
+
+                    if (!node.childNodes().isEmpty()) {
+                        splitBlocks(node.childNodes(), blocks);
+                    }
                 } else if (TAG_B.equals(node.nodeName()) || TAG_STRONG.equals(node.nodeName())) {
                     // 处理文本 加粗
                     Param param = new Param();
@@ -185,13 +189,12 @@ public class RichTextConverter implements TagConstant {
         String id = element.attr(ATTR_ID);
         String name = element.attr(ATTR_NAME);
         if (StringUtils.isBlank(id) || StringUtils.isBlank(name) || !name.endsWith(AUDIO_SUFFIX)) {
-            // 按文本处理
-            // processText(element.text(), null, blocks);
+            // 按链接处理
+            // processLink(element, blocks);
             return;
         }
 
         String url = element.attr(ATTR_URL);
-
         Block block = new Block();
         block.setType(BlockType.audio);
         block.setValue(url);
@@ -206,6 +209,20 @@ public class RichTextConverter implements TagConstant {
         blocks.add(block);
     }
 
+    private static void processLink(Element element, List<Block> blocks) {
+        String href = element.attr(ATTR_HREF);
+        String text = element.text();
+        if (StringUtils.isBlank(href) || StringUtils.isBlank(text)) {
+            return;
+        }
+
+        Block block = new Block();
+        block.setType(BlockType.link);
+        block.setValue(href);
+        block.setExt1(text);
+        blocks.add(block);
+    }
+
     private static void processText(String value, Param param, List<Block> blocks) {
         if (StringUtils.isBlank(value)) {
             return;