From 1fd7d5df8859a1024bd2477626c309e87350c77e Mon Sep 17 00:00:00 2001 From: kl Date: Fri, 19 Feb 2021 10:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BE=9D=E8=B5=96=20highligh?= =?UTF-8?q?tjs=20=E4=BB=A3=E7=A0=81=E6=96=87=E4=BB=B6=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E9=AB=98=E4=BA=AE=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/keking/model/FileType.java | 6 ++ .../java/cn/keking/service/FilePreview.java | 1 + .../service/impl/CodeFilePreviewImpl.java | 26 ++++++++ server/src/main/resources/web/code.ftl | 66 +++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 server/src/main/java/cn/keking/service/impl/CodeFilePreviewImpl.java create mode 100644 server/src/main/resources/web/code.ftl diff --git a/server/src/main/java/cn/keking/model/FileType.java b/server/src/main/java/cn/keking/model/FileType.java index 5cf6ab08..93bb4b07 100644 --- a/server/src/main/java/cn/keking/model/FileType.java +++ b/server/src/main/java/cn/keking/model/FileType.java @@ -16,6 +16,7 @@ public enum FileType { OFFICE("officeFilePreviewImpl"), SIMTEXT("simTextFilePreviewImpl"), PDF("pdfFilePreviewImpl"), + CODE("codeFilePreviewImpl"), OTHER("otherFilePreviewImpl"), MEDIA("mediaFilePreviewImpl"), MARKDOWN("markdownFilePreviewImpl"), @@ -24,11 +25,13 @@ public enum FileType { CAD("cadFilePreviewImpl"), TIFF("tiffFilePreviewImpl"); + private static final String[] OFFICE_TYPES = {"docx", "doc", "xls", "xlsx", "ppt", "pptx"}; private static final String[] PICTURE_TYPES = {"jpg", "jpeg", "png", "gif", "bmp", "ico", "raw"}; private static final String[] ARCHIVE_TYPES = {"rar", "zip", "jar", "7-zip", "tar", "gzip", "7z"}; private static final String[] TIFF_TYPES = {"tif", "tiff"}; private static final String[] SSIM_TEXT_TYPES = ConfigConstants.getSimText(); + private static final String[] CODES = {"java", "c", "php", "go", "python", "py", "js", "html", "ftl", "css", "lua", "sh", "rb", "h", "cpp", "cs", "aspx", "jsp"}; private static final String[] MEDIA_TYPES = ConfigConstants.getMedia(); private static final Map FILE_TYPE_MAPPER = new HashMap<>(); @@ -51,6 +54,9 @@ public enum FileType { for (String tif : TIFF_TYPES) { FILE_TYPE_MAPPER.put(tif, FileType.TIFF); } + for (String code : CODES) { + FILE_TYPE_MAPPER.put(code, FileType.CODE); + } FILE_TYPE_MAPPER.put("md", FileType.MARKDOWN); FILE_TYPE_MAPPER.put("xml", FileType.XML); FILE_TYPE_MAPPER.put("pdf", FileType.PDF); diff --git a/server/src/main/java/cn/keking/service/FilePreview.java b/server/src/main/java/cn/keking/service/FilePreview.java index 456a3581..0bdac54b 100644 --- a/server/src/main/java/cn/keking/service/FilePreview.java +++ b/server/src/main/java/cn/keking/service/FilePreview.java @@ -17,6 +17,7 @@ public interface FilePreview { String TIFF_FILE_PREVIEW_PAGE = "tiff"; String OFFICE_PICTURE_FILE_PREVIEW_PAGE = "officePicture"; String TXT_FILE_PREVIEW_PAGE = "txt"; + String CODE_FILE_PREVIEW_PAGE = "code"; String EXEL_FILE_PREVIEW_PAGE = "html"; String XML_FILE_PREVIEW_PAGE = "xml"; String MARKDOWN_FILE_PREVIEW_PAGE = "markdown"; diff --git a/server/src/main/java/cn/keking/service/impl/CodeFilePreviewImpl.java b/server/src/main/java/cn/keking/service/impl/CodeFilePreviewImpl.java new file mode 100644 index 00000000..7a9f9eac --- /dev/null +++ b/server/src/main/java/cn/keking/service/impl/CodeFilePreviewImpl.java @@ -0,0 +1,26 @@ +package cn.keking.service.impl; + +import cn.keking.model.FileAttribute; +import cn.keking.service.FilePreview; +import org.springframework.stereotype.Component; +import org.springframework.ui.Model; + +/** + * @author kl (http://kailing.pub) + * @since 2021/2/18 + */ +@Component +public class CodeFilePreviewImpl implements FilePreview { + + private final SimTextFilePreviewImpl filePreviewHandle; + + public CodeFilePreviewImpl(SimTextFilePreviewImpl filePreviewHandle) { + this.filePreviewHandle = filePreviewHandle; + } + + @Override + public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) { + filePreviewHandle.filePreviewHandle(url, model, fileAttribute); + return CODE_FILE_PREVIEW_PAGE; + } +} diff --git a/server/src/main/resources/web/code.ftl b/server/src/main/resources/web/code.ftl new file mode 100644 index 00000000..5d53ae73 --- /dev/null +++ b/server/src/main/resources/web/code.ftl @@ -0,0 +1,66 @@ + + + + + + 代码预览 + <#include "*/commonHeader.ftl"> + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + + + + +