From 42513c291adbd053624c98a1ce88177e154d9255 Mon Sep 17 00:00:00 2001 From: ruibaby Date: Sun, 17 Mar 2019 16:00:22 +0800 Subject: [PATCH] v1.0 --- .../ryanc/halo/listener/StartedListener.java | 71 ++++++++- .../ryanc/halo/model/support/HaloConst.java | 12 +- .../java/cc/ryanc/halo/utils/HaloUtils.java | 6 +- .../cc/ryanc/halo/utils/MarkdownUtils.java | 14 +- .../java/cc/ryanc/halo/utils/OwoUtil.java | 16 +- .../java/cc/ryanc/halo/utils/ThemeUtils.java | 2 +- .../web/controller/admin/ThemeController.java | 2 +- .../controller/content/IndexController.java | 15 ++ .../base}/BaseContentController.java | 15 +- .../web/controller/core/CommonController.java | 21 ++- .../controller/core/InstallController.java | 27 ++-- .../static/halo-common/OwO/OwO.path.json | 137 ++++++++++++++++++ 12 files changed, 278 insertions(+), 60 deletions(-) create mode 100644 src/main/java/cc/ryanc/halo/web/controller/content/IndexController.java rename src/main/java/cc/ryanc/halo/web/controller/{core => content/base}/BaseContentController.java (76%) create mode 100644 src/main/resources/static/halo-common/OwO/OwO.path.json diff --git a/src/main/java/cc/ryanc/halo/listener/StartedListener.java b/src/main/java/cc/ryanc/halo/listener/StartedListener.java index 31317e20e..d2d0afe62 100644 --- a/src/main/java/cc/ryanc/halo/listener/StartedListener.java +++ b/src/main/java/cc/ryanc/halo/listener/StartedListener.java @@ -1,14 +1,27 @@ package cc.ryanc.halo.listener; import cc.ryanc.halo.config.properties.HaloProperties; +import cc.ryanc.halo.model.support.HaloConst; +import cc.ryanc.halo.model.support.Theme; +import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.utils.HaloUtils; +import cc.ryanc.halo.utils.ThemeUtils; +import cc.ryanc.halo.web.controller.content.base.BaseContentController; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import freemarker.template.TemplateModelException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Configuration; +import org.springframework.util.ResourceUtils; + +import java.io.File; +import java.io.FileNotFoundException; +import java.nio.charset.Charset; +import java.util.List; /** *
@@ -31,18 +44,54 @@ public class StartedListener implements ApplicationListener themes = ThemeUtils.getThemes();
+        if (null != themes) {
+            HaloConst.THEMES = themes;
+        }
+    }
+
+    /**
+     * Get active theme
+     */
+    private void getActiveTheme() {
+        final String themeValue = optionService.getByKey("theme");
+        if (StrUtil.isNotEmpty(themeValue) && !StrUtil.equals(themeValue, null)) {
+            BaseContentController.THEME = themeValue;
+        } else {
+            BaseContentController.THEME = "anatole";
+        }
+        try {
+            configuration.setSharedVariable("themeName", BaseContentController.THEME);
+        } catch (TemplateModelException e) {
+            e.printStackTrace();
+        }
+    }
+
     private void printStartInfo() {
         // Get server port
         String serverPort = applicationContext.getEnvironment().getProperty("server.port");
@@ -75,4 +124,16 @@ public class StartedListener implements ApplicationListener OPTIONS = new HashMap<>();
 
     /**
-     * OwO表情
+     * All of the Owo
      */
-    public static Map OWO = new HashMap<>();
+    public static JSONObject OWO;
 
     /**
-     * 所有主题
+     * All of the themes
      */
     public static List THEMES = new ArrayList<>();
 
diff --git a/src/main/java/cc/ryanc/halo/utils/HaloUtils.java b/src/main/java/cc/ryanc/halo/utils/HaloUtils.java
index b6709a6f0..705ce8e3a 100755
--- a/src/main/java/cc/ryanc/halo/utils/HaloUtils.java
+++ b/src/main/java/cc/ryanc/halo/utils/HaloUtils.java
@@ -1,6 +1,5 @@
 package cc.ryanc.halo.utils;
 
-import cc.ryanc.halo.model.support.Theme;
 import cn.hutool.core.text.StrBuilder;
 import cn.hutool.core.util.StrUtil;
 import com.qiniu.common.Zone;
@@ -8,7 +7,6 @@ import io.github.biezhi.ome.OhMyEmail;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.lang.NonNull;
 import org.springframework.util.Assert;
-import org.springframework.util.ResourceUtils;
 
 import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
@@ -23,7 +21,9 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.attribute.BasicFileAttributeView;
 import java.nio.file.attribute.BasicFileAttributes;
-import java.util.*;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Properties;
 
 import static cc.ryanc.halo.model.support.HaloConst.OPTIONS;
 
diff --git a/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java b/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java
index ceeb434c7..fbc801462 100644
--- a/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java
+++ b/src/main/java/cc/ryanc/halo/utils/MarkdownUtils.java
@@ -15,33 +15,35 @@ import java.util.Map;
 import java.util.Set;
 
 /**
+ * Markdown utils
+ *
  * @author : RYAN0UP
  * @date : 2018/11/14
  */
 public class MarkdownUtils {
 
     /**
-     * Front-matter 插件
+     * Front-matter extension
      */
     private static final Set EXTENSIONS_YAML = Collections.singleton(YamlFrontMatterExtension.create());
 
     /**
-     * Table 插件
+     * Table extension
      */
     private static final Set EXTENSIONS_TABLE = Collections.singleton(TablesExtension.create());
 
     /**
-     * 解析 Markdown 文档
+     * Parse Markdown content
      */
     private static final Parser PARSER = Parser.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build();
 
     /**
-     * 渲染 HTML 文档
+     * Render HTML content
      */
     private static final HtmlRenderer RENDERER = HtmlRenderer.builder().extensions(EXTENSIONS_YAML).extensions(EXTENSIONS_TABLE).build();
 
     /**
-     * 渲染 Markdown
+     * Render Markdown content
      *
      * @param content content
      * @return String
@@ -66,7 +68,7 @@ public class MarkdownUtils {
     }
 
     /**
-     * 获取元数据
+     * Get front-matter
      *
      * @param content content
      * @return Map
diff --git a/src/main/java/cc/ryanc/halo/utils/OwoUtil.java b/src/main/java/cc/ryanc/halo/utils/OwoUtil.java
index d1586b0cd..d997e6c82 100644
--- a/src/main/java/cc/ryanc/halo/utils/OwoUtil.java
+++ b/src/main/java/cc/ryanc/halo/utils/OwoUtil.java
@@ -5,9 +5,7 @@ import lombok.extern.slf4j.Slf4j;
 import static cc.ryanc.halo.model.support.HaloConst.OWO;
 
 /**
- * 
- *     OwO表情工具类
- * 
+ * Owo util * * @author : RYAN0UP * @date : 2017/12/22 @@ -16,15 +14,15 @@ import static cc.ryanc.halo.model.support.HaloConst.OWO; public class OwoUtil { /** - * 将表情标志转化为图片地址 + * Owo mark converted into a picture address * - * @param mark 表情标志 - * @return 表情图片地址 + * @param content content + * @return picture address */ - public static String markToImg(String mark) { + public static String parseOwo(String content) { for (String key : OWO.keySet()) { - mark = mark.replace(key, OWO.get(key)); + content = content.replace(key, OWO.get(key).toString()); } - return mark; + return content; } } diff --git a/src/main/java/cc/ryanc/halo/utils/ThemeUtils.java b/src/main/java/cc/ryanc/halo/utils/ThemeUtils.java index f5021298f..f34adbc0a 100644 --- a/src/main/java/cc/ryanc/halo/utils/ThemeUtils.java +++ b/src/main/java/cc/ryanc/halo/utils/ThemeUtils.java @@ -2,7 +2,7 @@ package cc.ryanc.halo.utils; import cc.ryanc.halo.model.support.HaloConst; import cc.ryanc.halo.model.support.Theme; -import cc.ryanc.halo.web.controller.core.BaseContentController; +import cc.ryanc.halo.web.controller.content.base.BaseContentController; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/ThemeController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/ThemeController.java index 2e5500633..c38eff80b 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/ThemeController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/ThemeController.java @@ -7,7 +7,7 @@ import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.utils.LocaleMessageUtil; import cc.ryanc.halo.utils.ThemeUtils; import cc.ryanc.halo.web.controller.admin.base.BaseController; -import cc.ryanc.halo.web.controller.core.BaseContentController; +import cc.ryanc.halo.web.controller.content.base.BaseContentController; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.FileReader; import cn.hutool.core.io.file.FileWriter; diff --git a/src/main/java/cc/ryanc/halo/web/controller/content/IndexController.java b/src/main/java/cc/ryanc/halo/web/controller/content/IndexController.java new file mode 100644 index 000000000..3b1450f61 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/web/controller/content/IndexController.java @@ -0,0 +1,15 @@ +package cc.ryanc.halo.web.controller.content; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * Blog index page controller + * + * @author : RYAN0UP + * @date : 2019-03-17 + */ +@Controller +@RequestMapping +public class IndexController { +} diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/BaseContentController.java b/src/main/java/cc/ryanc/halo/web/controller/content/base/BaseContentController.java similarity index 76% rename from src/main/java/cc/ryanc/halo/web/controller/core/BaseContentController.java rename to src/main/java/cc/ryanc/halo/web/controller/content/base/BaseContentController.java index 665b8e4f5..b1b7ff8fe 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/BaseContentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/content/base/BaseContentController.java @@ -1,12 +1,10 @@ -package cc.ryanc.halo.web.controller.core; +package cc.ryanc.halo.web.controller.content.base; import cc.ryanc.halo.logging.Logger; import cn.hutool.core.text.StrBuilder; /** - *
- *     Controller抽象类
- * 
+ * Content base Controller * * @author : RYAN0UP * @date : 2017/12/15 @@ -14,16 +12,17 @@ import cn.hutool.core.text.StrBuilder; public abstract class BaseContentController { /** - * 定义默认主题 + * Default theme */ public static String THEME = "anatole"; + protected Logger log = Logger.getLogger(getClass()); /** - * 根据模板名称渲染页面 + * Render page by template name * * @param pageName pageName - * @return 返回拼接好的模板路径 + * @return template path */ public String render(String pageName) { final StrBuilder themeStr = new StrBuilder("themes/"); @@ -34,7 +33,7 @@ public abstract class BaseContentController { } /** - * 渲染404页面 + * Redirect to 404 * * @return redirect:/404 */ diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java b/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java index 55d415871..f5966e041 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/CommonController.java @@ -4,6 +4,7 @@ import cc.ryanc.halo.logging.Logger; import cc.ryanc.halo.model.entity.User; import cc.ryanc.halo.model.support.HaloConst; import cc.ryanc.halo.utils.ThemeUtils; +import cc.ryanc.halo.web.controller.content.base.BaseContentController; import cn.hutool.core.text.StrBuilder; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.stereotype.Controller; @@ -15,9 +16,7 @@ import javax.servlet.http.HttpSession; import java.io.FileNotFoundException; /** - *
- *     错误页面控制器
- * 
+ * Error page Controller * * @author : RYAN0UP * @date : 2017/12/26 @@ -27,10 +26,16 @@ public class CommonController implements ErrorController { private static final String ERROR_PATH = "/error"; + private static final String NOT_FROUND_TEMPLATE = "404.ftl"; + + private static final String INTERNAL_ERROR_TEMPLATE = "500.ftl"; + + private static final String ADMIN_URL = "/admin"; + private final Logger log = Logger.getLogger(getClass()); /** - * 渲染404,500 + * Handle error * * @param request request * @return String @@ -54,14 +59,14 @@ public class CommonController implements ErrorController { if (StringUtils.startsWithIgnoreCase(throwable.getMessage(), "Could not resolve view with name '")) { // TODO May cause unreasoned problem // if Ftl was not found then redirect to /404 - if (requestURI.contains("/admin") && null != user) { + if (requestURI.contains(ADMIN_URL) && null != user) { return "redirect:/admin/404"; } else { return "redirect:/404"; } } } - if (requestURI.contains("/admin") && null != user) { + if (requestURI.contains(ADMIN_URL) && null != user) { return "redirect:/admin/500"; } else { return "redirect:/500"; @@ -95,7 +100,7 @@ public class CommonController implements ErrorController { */ @GetMapping(value = "/404") public String contentNotFround() throws FileNotFoundException { - if(ThemeUtils.isTemplateExist("404.ftl")){ + if (ThemeUtils.isTemplateExist(NOT_FROUND_TEMPLATE)) { return "common/error/404"; } StrBuilder path = new StrBuilder("themes/"); @@ -111,7 +116,7 @@ public class CommonController implements ErrorController { */ @GetMapping(value = "/500") public String contentInternalError() throws FileNotFoundException { - if(ThemeUtils.isTemplateExist("500.ftl")){ + if (ThemeUtils.isTemplateExist(INTERNAL_ERROR_TEMPLATE)) { return "common/error/404"; } StrBuilder path = new StrBuilder("themes/"); diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java index b0acb866e..034328c95 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java @@ -85,12 +85,14 @@ public class InstallController { /** * Do install * - * @param blogLocale language - * @param userName username - * @param userDisplayName nickname - * @param userEmail user email - * @param userPwd user password - * @param request request + * @param blogLocale language + * @param blogTitle blog title + * @param blogUrl blog url + * @param userName user name + * @param nickName nick name + * @param userEmail user email + * @param userPwd user password + * @param request request * @return JsonResult */ @PostMapping(value = "/do") @@ -99,7 +101,7 @@ public class InstallController { @RequestParam("blogTitle") String blogTitle, @RequestParam("blogUrl") String blogUrl, @RequestParam("userName") String userName, - @RequestParam("userDisplayName") String userDisplayName, + @RequestParam("userDisplayName") String nickName, @RequestParam("userEmail") String userEmail, @RequestParam("userPwd") String userPwd, HttpServletRequest request) { @@ -107,23 +109,20 @@ public class InstallController { if (StrUtil.equals("true", OPTIONS.get("is_install"))) { return new JsonResult(0, "该博客已初始化,不能再次安装!"); } - //创建新的用户 + // Create new user final User user = new User(); user.setUsername(userName); - if (StrUtil.isBlank(userDisplayName)) { - userDisplayName = userName; - } - user.setNickname(userDisplayName); + user.setNickname(StrUtil.isBlank(nickName) ? userName : nickName); user.setEmail(userEmail); user.setPassword(SecureUtil.md5(userPwd)); userService.create(user); //默认分类 - final Category category = new Category(); + Category category = new Category(); category.setName("未分类"); category.setSnakeName("default"); category.setDescription("未分类"); - categoryService.create(category); + category = categoryService.create(category); //第一篇文章 final Post post = new Post(); diff --git a/src/main/resources/static/halo-common/OwO/OwO.path.json b/src/main/resources/static/halo-common/OwO/OwO.path.json new file mode 100644 index 000000000..38422a3d5 --- /dev/null +++ b/src/main/resources/static/halo-common/OwO/OwO.path.json @@ -0,0 +1,137 @@ +{ + "@[勉强]": "勉强.png", + "@[乖]": "乖.png", + "@[黑线]": "黑线.png", + "@(献花)": "献花.png", + "@(想一想)": "想一想.png", + "@(蜡烛)": "蜡烛.png", + "@[滑稽]": "滑稽.png", + "@(黑线)": "黑线.png", + "@[小乖]": "小乖.png", + "@(中枪)": "中枪.png", + "@(长草)": "长草.png", + "@[捂嘴笑]": "捂嘴笑.png", + "@[酷]": "酷.png", + "@(喷血)": "喷血.png", + "@[彩虹]": "彩虹.png", + "@[钱]": "钱.png", + "@(呲牙)": "呲牙.png", + "@[手纸]": "手纸.png", + "@[钱币]": "钱币.png", + "@[太开心]": "太开心.png", + "@(抠鼻)": "抠鼻.png", + "@[你懂的]": "你懂的.png", + "@[吐舌]": "吐舌.png", + "@[茶杯]": "茶杯.png", + "@[泪]": "泪.png", + "@(吐)": "吐.png", + "@(吐舌)": "吐舌.png", + "@[太阳]": "太阳.png", + "@(不出所料)": "不出所料.png", + "@[挖鼻]": "挖鼻.png", + "@(观察)": "观察.png", + "@(内伤)": "内伤.png", + "@[灯泡]": "灯泡.png", + "@[呵呵]": "呵呵.png", + "@(尴尬)": "尴尬.png", + "@(深思)": "深思.png", + "@(小怒)": "小怒.png", + "@[狂汗]": "狂汗.png", + "@[what]": "what.png", + "@(口水)": "口水.png", + "@(大囧)": "大囧.png", + "@[懒得理]": "懒得理.png", + "@[真棒]": "真棒.png", + "@[三道杠]": "三道杠.png", + "@[睡觉]": "睡觉.png", + "@[沙发]": "沙发.png", + "@(暗地观察)": "暗地观察.png", + "@[笑尿]": "笑尿.png", + "@[生气]": "生气.png", + "@(肿包)": "肿包.png", + "@(狂汗)": "狂汗.png", + "@(喷水)": "喷水.png", + "@(惊喜)": "惊喜.png", + "@[便便]": "便便.png", + "@(阴暗)": "阴暗.png", + "@[汗]": "汗.png", + "@(喜极而泣)": "喜极而泣.png", + "@[香蕉]": "香蕉.png", + "@[大拇指]": "大拇指.png", + "@[蜡烛]": "蜡烛.png", + "@(鼓掌)": "鼓掌.png", + "@(邪恶)": "邪恶.png", + "@[惊恐]": "惊恐.png", + "@[惊哭]": "惊哭.png", + "@[嘚瑟]": "嘚瑟.png", + "@[药丸]": "药丸.png", + "@[吐]": "吐.png", + "@[蛋糕]": "蛋糕.png", + "@(愤怒)": "愤怒.png", + "@(无所谓)": "无所谓.png", + "@[啊]": "啊.png", + "@(坐等)": "坐等.png", + "@[nico]": "nico.png", + "@[弱]": "弱.png", + "@[小红脸]": "小红脸.png", + "@(哭泣)": "哭泣.png", + "@[呼]": "呼.png", + "@[哈哈]": "哈哈.png", + "@[爱心]": "爱心.png", + "@(不说话)": "不说话.png", + "@(脸红)": "脸红.png", + "@[惊讶]": "惊讶.png", + "@(傻笑)": "傻笑.png", + "@(期待)": "期待.png", + "@(击掌)": "击掌.png", + "@(抽烟)": "抽烟.png", + "@[胜利]": "胜利.png", + "@(害羞)": "害羞.png", + "@[吃翔]": "吃翔.png", + "@(便便)": "便便.png", + "@(献黄瓜)": "献黄瓜.png", + "@[不高兴]": "不高兴.png", + "@(皱眉)": "皱眉.png", + "@(汗)": "汗.png", + "@[吃瓜]": "吃瓜.png", + "@[心碎]": "心碎.png", + "@[玫瑰]": "玫瑰.png", + "@(扇耳光)": "扇耳光.png", + "@[OK]": "OK.png", + "@[音乐]": "音乐.png", + "@[阴险]": "阴险.png", + "@(看热闹)": "看热闹.png", + "@[星星月亮]": "星星月亮.png", + "@[犀利]": "犀利.png", + "@(高兴)": "高兴.png", + "@(亲亲)": "亲亲.png", + "@[冷]": "冷.png", + "@[喷]": "喷.png", + "@(咽气)": "咽气.png", + "@[怒]": "怒.png", + "@(锁眉)": "锁眉.png", + "@[红领巾]": "红领巾.png", + "@(中指)": "中指.png", + "@[礼物]": "礼物.png", + "@(赞一个)": "赞一个.png", + "@(欢呼)": "欢呼.png", + "@[花心]": "花心.png", + "@[鄙视]": "鄙视.png", + "@[呀咩爹]": "呀咩爹.png", + "@[开心]": "开心.png", + "@[酸爽]": "酸爽.png", + "@(得意)": "得意.png", + "@(装大款)": "装大款.png", + "@[委屈]": "委屈.png", + "@(中刀)": "中刀.png", + "@(看不见)": "看不见.png", + "@(小眼睛)": "小眼睛.png", + "@(无语)": "无语.png", + "@(投降)": "投降.png", + "@(无奈)": "无奈.png", + "@[咦]": "咦.png", + "@(不高兴)": "不高兴.png", + "@[笑眼]": "笑眼.png", + "@(吐血倒地)": "吐血倒地.png", + "@[疑问]": "疑问.png" +}