diff --git a/src/main/java/cc/ryanc/halo/listener/StartedListener.java b/src/main/java/cc/ryanc/halo/listener/StartedListener.java index f4916fc99..669d7c982 100644 --- a/src/main/java/cc/ryanc/halo/listener/StartedListener.java +++ b/src/main/java/cc/ryanc/halo/listener/StartedListener.java @@ -2,8 +2,9 @@ package cc.ryanc.halo.listener; import cc.ryanc.halo.config.properties.HaloProperties; import cc.ryanc.halo.model.entity.User; -import cc.ryanc.halo.model.properties.BlogProperties; import cc.ryanc.halo.model.params.UserParam; +import cc.ryanc.halo.model.properties.BlogProperties; +import cc.ryanc.halo.model.properties.PrimaryProperties; import cc.ryanc.halo.model.support.HaloConst; import cc.ryanc.halo.model.support.Theme; import cc.ryanc.halo.service.OptionService; @@ -112,7 +113,7 @@ public class StartedListener implements ApplicationListener type; + + AttachmentProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + + @Override + public Class getType() { + return type; + } + + @Override + public String getValue() { + return value; + }} diff --git a/src/main/java/cc/ryanc/halo/model/properties/BlogProperties.java b/src/main/java/cc/ryanc/halo/model/properties/BlogProperties.java index 73f62d5c8..36dc42157 100644 --- a/src/main/java/cc/ryanc/halo/model/properties/BlogProperties.java +++ b/src/main/java/cc/ryanc/halo/model/properties/BlogProperties.java @@ -6,140 +6,36 @@ package cc.ryanc.halo.model.properties; */ public enum BlogProperties implements PropertyEnum { + /** - * 博客语言 + * Blog locale. */ BLOG_LOCALE("blog_locale", String.class), /** - * 博客标题 + * Blog title. */ BLOG_TITLE("blog_title", String.class), /** - * 博客地址 + * Blog logo. + */ + BLOG_LOGO("blog_logo", String.class), + + /** + * Blog url. */ BLOG_URL("blog_url", String.class), /** - * 文章摘要字数 + * Blog favicon. */ - POST_SUMMARY("post_summary", Long.class), + BLOG_FAVICON("blog_favicon", String.class), /** - * 首页文章条数 + * Blog footer info. */ - INDEX_POSTS("index_posts", Integer.class), - - /** - * 每页评论条数 - */ - INDEX_COMMENTS("index_comments", Integer.class), - - /** - * 是否已经安装 - */ - IS_INSTALL("is_install", Boolean.class), - - /** - * RSS显示文章条数 - */ - RSS_POSTS("rss_posts", Integer.class), - - /** - * API状态 - */ - API_STATUS("api_status", Boolean.class), - - /** - * 邮箱服务器地址 - */ - MAIL_SMTP_HOST("mail_smtp_host", String.class), - - /** - * 邮箱地址 - */ - MAIL_SMTP_USERNAME("mail_smtp_username", String.class), - - /** - * 邮箱密码/授权码 - */ - MAIL_SMTP_PASSWORD("mail_smtp_password", String.class), - - /** - * 发送者名称 - */ - MAIL_FROM_NAME("mail_from_name", String.class), - - /** - * 启用邮件服务 - */ - SMTP_EMAIL_ENABLE("smtp_email_enable", Boolean.class), - - /** - * 邮件回复通知 - */ - COMMENT_REPLY_NOTICE("comment_reply_notice", Boolean.class), - - /** - * 新评论是否需要审核 - */ - NEW_COMMENT_NEED_CHECK("new_comment_need_check", Boolean.class), - - /** - * 新评论通知 - */ - NEW_COMMENT_NOTICE("new_comment_notice", Boolean.class), - - /** - * 邮件审核通过通知 - */ - COMMENT_PASS_NOTICE("comment_pass_notice", Boolean.class), - - /** - * 站点描述 - */ - SEO_DESCRIPTION("seo_description", String.class), - - /** - * 博客主题 - */ - THEME("theme", String.class), - - /** - * 博客搭建日期 - */ - BLOG_START("blog_start", Long.class), - - /** - * 仪表盘部件 文章总数 - */ - WIDGET_POSTCOUNT("widget_postcount", Boolean.class), - - /** - * 仪表盘部件 评论总数 - */ - WIDGET_COMMENTCOUNT("widget_commentcount", Boolean.class), - - /** - * 仪表盘部件 附件总数 - */ - WIDGET_ATTACHMENTCOUNT("widget_attachmentcount", Boolean.class), - - /** - * 仪表盘部件 成立天数 - */ - WIDGET_DAYCOUNT("widget_daycount", Boolean.class), - - /** - * API Token - */ - API_TOKEN("api_token", String.class), - - /** - * 附件存储位置 - */ - ATTACHMENT_TYPE("attachment_type", String.class); + BLOG_FOOTER_INFO("blog_footer_info", String.class); private String value; diff --git a/src/main/java/cc/ryanc/halo/model/properties/CommentProperties.java b/src/main/java/cc/ryanc/halo/model/properties/CommentProperties.java new file mode 100644 index 000000000..29e80e6bd --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/properties/CommentProperties.java @@ -0,0 +1,46 @@ +package cc.ryanc.halo.model.properties; + +/** + * Comment properties. + * + * @author johnniang + * @date 4/1/19 + */ +public enum CommentProperties implements PropertyEnum { + + GAVATAR_DEFAULT("comment_gavatar_default", String.class), + + NEW_NEED_CHECK("comment_new_need_check", Boolean.class), + + NEW_NOTICE("comment_new_notice", Boolean.class), + + PASS_NOTICE("comment_pass_notice", Boolean.class), + + REPLY_NOTICE("comment_reply_notice", Boolean.class), + + API_ENABLED("comment_api_enabled", Boolean.class), + + PAGE_SIZE("comment_page_size", Integer.class), + + CONTENT_PLACEHOLDER("comment_content_placeholder", String.class), + + CUSTOM_STYLE("comment_custom_style", String.class); + + private final String value; + + private final Class type; + + CommentProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + @Override + public Class getType() { + return type; + } + + @Override + public String getValue() { + return value; + }} diff --git a/src/main/java/cc/ryanc/halo/model/properties/EmailProperties.java b/src/main/java/cc/ryanc/halo/model/properties/EmailProperties.java index 3b91be6ff..9848dd0fa 100644 --- a/src/main/java/cc/ryanc/halo/model/properties/EmailProperties.java +++ b/src/main/java/cc/ryanc/halo/model/properties/EmailProperties.java @@ -8,14 +8,19 @@ package cc.ryanc.halo.model.properties; */ public enum EmailProperties implements PropertyEnum { - SMTP_HOST("email_smtp_host", String.class), - SMTP_USERNAME("email_smtp_username", String.class), - SMTP_PASSWORD("email_smtp_password", String.class), + HOST("email_host", String.class), + + PROTOCOL("email_protocol", String.class), + + SSL_PORT("email_ssl_port", Integer.class), + + USERNAME("email_username", String.class), + + PASSWORD("email_password", String.class), + FROM_NAME("email_from_name", String.class), - ENABLED("email_enabled", Boolean.class), - COMMENT_REPLY_NOTICE_ENABLED("email_comment_reply_notice_enabled", Boolean.class), - NEW_COMMENT_NOTICE_ENABLED("email_new_comment_notice_enabled", Boolean.class), - COMMENT_PASS_NOTICE_ENABLED("email_comment_pass_notice_enabled", Boolean.class); + + ENABLED("email_enabled", Boolean.class); private final String value; @@ -32,10 +37,10 @@ public enum EmailProperties implements PropertyEnum { @Override public Class getType() { - return null; + return type; } @Override public String getValue() { - return null; + return value; }} diff --git a/src/main/java/cc/ryanc/halo/model/properties/OtherProperties.java b/src/main/java/cc/ryanc/halo/model/properties/OtherProperties.java new file mode 100644 index 000000000..e704a9624 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/properties/OtherProperties.java @@ -0,0 +1,36 @@ +package cc.ryanc.halo.model.properties; + +/** + * Other properties. + * + * @author johnniang + * @date 4/1/19 + */ +public enum OtherProperties implements PropertyEnum { + + API_ENABLED("api_enabled", Boolean.class), + + API_TOKEN("api_token", String.class), + + STATISTICS_CODE("statistics_code", String.class), + ; + + private final String value; + + private final Class type; + + OtherProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + @Override + public Class getType() { + return type; + } + + @Override + public String getValue() { + return value; + } +} diff --git a/src/main/java/cc/ryanc/halo/model/properties/PostProperties.java b/src/main/java/cc/ryanc/halo/model/properties/PostProperties.java new file mode 100644 index 000000000..d2b6f9531 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/properties/PostProperties.java @@ -0,0 +1,35 @@ +package cc.ryanc.halo.model.properties; + +/** + * @author johnniang + * @date 4/1/19 + */ +public enum PostProperties implements PropertyEnum { + + SUMMARY_LENGTH("post_summary_length", Integer.class), + + RSS_PAGE_SIZE("rss_page_size", Integer.class), + + INDEX_PAGE_SIZE("post_index_page_size", Integer.class), + ; + + private final String value; + + private final Class type; + + PostProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + + @Override + public Class getType() { + return type; + } + + @Override + public String getValue() { + return value; + } +} diff --git a/src/main/java/cc/ryanc/halo/model/properties/PrimaryProperties.java b/src/main/java/cc/ryanc/halo/model/properties/PrimaryProperties.java new file mode 100644 index 000000000..4aa566346 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/properties/PrimaryProperties.java @@ -0,0 +1,35 @@ +package cc.ryanc.halo.model.properties; + +/** + * Primary properties. + * + * @author johnniang + * @date 4/2/19 + */ +public enum PrimaryProperties implements PropertyEnum { + + IS_INSTALLED("is_installed", Boolean.class), + + THEME("theme", String.class), + + BIRTHDAY("birthday", Long.class), + ; + + private final String value; + + private final Class type; + + PrimaryProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + @Override + public Class getType() { + return null; + } + + @Override + public String getValue() { + return null; + }} diff --git a/src/main/java/cc/ryanc/halo/model/properties/PropertyEnum.java b/src/main/java/cc/ryanc/halo/model/properties/PropertyEnum.java index 8328ede93..96dae32d7 100644 --- a/src/main/java/cc/ryanc/halo/model/properties/PropertyEnum.java +++ b/src/main/java/cc/ryanc/halo/model/properties/PropertyEnum.java @@ -85,7 +85,7 @@ public interface PropertyEnum extends ValueEnum { Assert.hasText(value, "Property value must not be blank"); try { - return Enum.valueOf(type, value); + return Enum.valueOf(type, value.toUpperCase()); } catch (Exception e) { // Ignore this exception return null; diff --git a/src/main/java/cc/ryanc/halo/model/properties/QnYunProperties.java b/src/main/java/cc/ryanc/halo/model/properties/QnYunProperties.java index 24e1ac12a..6f028e8fd 100644 --- a/src/main/java/cc/ryanc/halo/model/properties/QnYunProperties.java +++ b/src/main/java/cc/ryanc/halo/model/properties/QnYunProperties.java @@ -8,16 +8,21 @@ package cc.ryanc.halo.model.properties; */ public enum QnYunProperties implements PropertyEnum { - ZONE("qiniu_zone", String.class), - ACCESS_KEY("qiniu_access_key", String.class), - SECRET_KEY("qiniu_secret_key", String.class), - DOMAIN("qiniu_domain", String.class), - BUCKET("qiniu_bucket", String.class), - SMALL_URL("qiniu_small_url", String.class); + ZONE("oss_qiniu_zone", String.class), - private String value; + ACCESS_KEY("oss_qiniu_access_key", String.class), - private Class type; + SECRET_KEY("oss_qiniu_secret_key", String.class), + + DOMAIN("oss_qiniu_domain", String.class), + + BUCKET("oss_qiniu_bucket", String.class), + + SMALL_URL("oss_qiniu_small_url", String.class); + + private final String value; + + private final Class type; QnYunProperties(String value, Class type) { if (!PropertyEnum.isSupportedType(type)) { diff --git a/src/main/java/cc/ryanc/halo/model/properties/SeoProperties.java b/src/main/java/cc/ryanc/halo/model/properties/SeoProperties.java new file mode 100644 index 000000000..36be9b615 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/properties/SeoProperties.java @@ -0,0 +1,42 @@ +package cc.ryanc.halo.model.properties; + +/** + * SEO properties. + * + * @author johnniang + * @date 4/1/19 + */ +public enum SeoProperties implements PropertyEnum { + + KEYWORDS("seo_keywords", String.class), + + DESCRIPTION("seo_description", String.class), + + BAIDU_TOKEN("seo_baidu_token", String.class), + + VERIFICATION_BAIDU("seo_verification_baidu", String.class), + + VERIFICATION_GOOGLE("seo_verification_google", String.class), + + VERIFICATION_BING("seo_verification_bing", String.class), + + VERIFICATION_QIHU("seo_verification_qihu", String.class); + + private final String value; + + private final Class type; + + SeoProperties(String value, Class type) { + this.value = value; + this.type = type; + } + + @Override + public Class getType() { + return type; + } + + @Override + public String getValue() { + return value; + }} diff --git a/src/main/java/cc/ryanc/halo/model/properties/UpYunProperties.java b/src/main/java/cc/ryanc/halo/model/properties/UpYunProperties.java index f074523d4..7f5ae9313 100644 --- a/src/main/java/cc/ryanc/halo/model/properties/UpYunProperties.java +++ b/src/main/java/cc/ryanc/halo/model/properties/UpYunProperties.java @@ -8,12 +8,17 @@ package cc.ryanc.halo.model.properties; */ public enum UpYunProperties implements PropertyEnum { - OSS_SOURCE("upyun_oss_source", String.class), - OSS_PASSWORD("upyun_oss_password", String.class), - OSS_BUCKET("upyun_oss_bucket", String.class), - OSS_DOMAIN("upyun_oss_domain", String.class), - OSS_OPERATOR("upyun_oss_operator", String.class), - OSS_SMALL_URL("ypyun_oss_small_url", String.class); + OSS_SOURCE("oss_upyun_source", String.class), + + OSS_PASSWORD("oss_upyun_password", String.class), + + OSS_BUCKET("oss_upyun_bucket", String.class), + + OSS_DOMAIN("oss_upyun_domain", String.class), + + OSS_OPERATOR("oss_upyun_operator", String.class), + + OSS_SMALL_URL("oss_upyun_small_url", String.class); private String value; diff --git a/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java index cdf99a466..5b1c7bef3 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/AttachmentServiceImpl.java @@ -4,7 +4,7 @@ import cc.ryanc.halo.handler.file.FileHandlers; import cc.ryanc.halo.model.dto.AttachmentOutputDTO; import cc.ryanc.halo.model.entity.Attachment; import cc.ryanc.halo.model.enums.AttachmentType; -import cc.ryanc.halo.model.properties.BlogProperties; +import cc.ryanc.halo.model.properties.AttachmentProperties; import cc.ryanc.halo.model.support.UploadResult; import cc.ryanc.halo.repository.AttachmentRepository; import cc.ryanc.halo.service.AttachmentService; @@ -107,6 +107,6 @@ public class AttachmentServiceImpl extends AbstractCrudService imple comment.setStatus(CommentStatus.PUBLISHED); } else { // Handle comment status - Boolean needAudit = optionService.getByPropertyOrDefault(BlogProperties.NEW_COMMENT_NEED_CHECK, Boolean.class, true); + Boolean needAudit = optionService.getByPropertyOrDefault(CommentProperties.NEW_NEED_CHECK, Boolean.class, true); if (needAudit) { comment.setStatus(CommentStatus.AUDITING); } else { diff --git a/src/main/java/cc/ryanc/halo/service/impl/MailServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/MailServiceImpl.java index 67babc01d..35492f0ce 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/MailServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/MailServiceImpl.java @@ -1,7 +1,6 @@ package cc.ryanc.halo.service.impl; import cc.ryanc.halo.exception.ServiceException; -import cc.ryanc.halo.model.properties.BlogProperties; import cc.ryanc.halo.model.properties.EmailProperties; import cc.ryanc.halo.service.MailService; import cc.ryanc.halo.service.OptionService; @@ -18,6 +17,8 @@ import java.util.Map; import java.util.Properties; /** + * Mail service implementation. + * * @author : RYAN0UP * @date : 2019-03-17 */ @@ -119,7 +120,7 @@ public class MailServiceImpl implements MailService { public void sendAttachMail(String to, String subject, Map content, String templateName, String attachFilename) { loadConfig(); - String fromUsername = optionService.getByPropertyOfNonNull(BlogProperties.MAIL_FROM_NAME); + String fromUsername = optionService.getByPropertyOfNonNull(EmailProperties.FROM_NAME); File file = new File(attachFilename); try { @@ -148,11 +149,11 @@ public class MailServiceImpl implements MailService { // Get default properties Properties defaultProperties = OhMyEmail.defaultConfig(log.isDebugEnabled()); // Set smtp host - defaultProperties.setProperty("mail.smtp.host", optionService.getByPropertyOfNonNull(EmailProperties.SMTP_HOST)); + defaultProperties.setProperty("mail.smtp.host", optionService.getByPropertyOfNonNull(EmailProperties.HOST)); // Config email OhMyEmail.config(defaultProperties, - optionService.getByPropertyOfNonNull(EmailProperties.SMTP_USERNAME), - optionService.getByPropertyOfNonNull(EmailProperties.SMTP_PASSWORD)); + optionService.getByPropertyOfNonNull(EmailProperties.USERNAME), + optionService.getByPropertyOfNonNull(EmailProperties.PASSWORD)); // Set config loaded with true loaded = true; diff --git a/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java index c57cbace8..8ff0cb78b 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/OptionServiceImpl.java @@ -3,11 +3,10 @@ package cc.ryanc.halo.service.impl; import cc.ryanc.halo.exception.MissingPropertyException; import cc.ryanc.halo.model.dto.OptionOutputDTO; import cc.ryanc.halo.model.entity.Option; -import cc.ryanc.halo.model.enums.*; +import cc.ryanc.halo.model.enums.OptionSource; +import cc.ryanc.halo.model.enums.ValueEnum; import cc.ryanc.halo.model.params.OptionParam; -import cc.ryanc.halo.model.properties.BlogProperties; -import cc.ryanc.halo.model.properties.PropertyEnum; -import cc.ryanc.halo.model.properties.QnYunProperties; +import cc.ryanc.halo.model.properties.*; import cc.ryanc.halo.repository.OptionRepository; import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.service.base.AbstractCrudService; @@ -212,9 +211,9 @@ public class OptionServiceImpl extends AbstractCrudService impl @Override public int getPostPageSize() { try { - return getByPropertyOrDefault(BlogProperties.INDEX_POSTS, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); + return getByPropertyOrDefault(PostProperties.INDEX_PAGE_SIZE, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); } catch (NumberFormatException e) { - log.error(BlogProperties.INDEX_POSTS + " option is not a number format", e); + log.error(PostProperties.INDEX_PAGE_SIZE.getValue() + " option is not a number format", e); return DEFAULT_POST_PAGE_SIZE; } } @@ -222,9 +221,9 @@ public class OptionServiceImpl extends AbstractCrudService impl @Override public int getCommentPageSize() { try { - return getByPropertyOrDefault(BlogProperties.INDEX_COMMENTS, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); + return getByPropertyOrDefault(CommentProperties.PAGE_SIZE, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); } catch (NumberFormatException e) { - log.error(BlogProperties.INDEX_COMMENTS + " option is not a number format", e); + log.error(CommentProperties.PAGE_SIZE.getValue() + " option is not a number format", e); return DEFAULT_COMMENT_PAGE_SIZE; } } @@ -232,9 +231,9 @@ public class OptionServiceImpl extends AbstractCrudService impl @Override public int getRssPageSize() { try { - return getByPropertyOrDefault(BlogProperties.RSS_POSTS, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); + return getByPropertyOrDefault(PostProperties.RSS_PAGE_SIZE, Integer.class, DEFAULT_COMMENT_PAGE_SIZE); } catch (NumberFormatException e) { - log.error(BlogProperties.RSS_POSTS + " setting is not a number format", e); + log.error(PostProperties.RSS_PAGE_SIZE.getValue() + " setting is not a number format", e); return DEFAULT_RSS_PAGE_SIZE; } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/AdminController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/AdminController.java index 06806008d..7681cc211 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/api/AdminController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/AdminController.java @@ -4,9 +4,9 @@ import cc.ryanc.halo.cache.lock.CacheLock; import cc.ryanc.halo.exception.BadRequestException; import cc.ryanc.halo.model.dto.CountOutputDTO; import cc.ryanc.halo.model.dto.UserOutputDTO; -import cc.ryanc.halo.model.properties.BlogProperties; import cc.ryanc.halo.model.enums.PostStatus; import cc.ryanc.halo.model.params.LoginParam; +import cc.ryanc.halo.model.properties.PrimaryProperties; import cc.ryanc.halo.security.context.SecurityContextHolder; import cc.ryanc.halo.security.filter.AdminAuthenticationFilter; import cc.ryanc.halo.service.*; @@ -61,7 +61,15 @@ public class AdminController { countOutputDTO.setPostCount(postService.countByStatus(PostStatus.PUBLISHED)); countOutputDTO.setAttachmentCount(attachmentService.count()); countOutputDTO.setCommentCount(commentService.count()); - countOutputDTO.setEstablishDays(Long.valueOf(optionService.getByProperty(BlogProperties.WIDGET_DAYCOUNT).orElse("0"))); + + long currentTimeMillis = System.currentTimeMillis(); + + // Calculate birthday + // TODO Initialize the birthday if absent + Long birthday = optionService.getByPropertyOrDefault(PrimaryProperties.BIRTHDAY, Long.class, currentTimeMillis); + long days = (currentTimeMillis - birthday) / (1000 * 24 * 3600); + countOutputDTO.setEstablishDays(days); + countOutputDTO.setLinkCount(linkService.count()); countOutputDTO.setVisitCount(postService.countVisit()); countOutputDTO.setLikeCount(postService.countLike()); diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java index 5366afb0d..2d3e246bd 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/api/ThemeController.java @@ -1,7 +1,8 @@ package cc.ryanc.halo.web.controller.admin.api; -import cc.ryanc.halo.model.properties.BlogProperties; import cc.ryanc.halo.model.enums.OptionSource; +import cc.ryanc.halo.model.properties.PrimaryProperties; +import cc.ryanc.halo.model.properties.PropertyEnum; import cc.ryanc.halo.model.support.Theme; import cc.ryanc.halo.service.OptionService; import cc.ryanc.halo.service.ThemeService; @@ -60,8 +61,9 @@ public class ThemeController { @GetMapping(value = "active") @ApiOperation("Active theme") public void active(@RequestParam(name = "themeName", defaultValue = "anatole") String themeName) throws TemplateModelException { - Map properties = new HashMap<>(1); - properties.put(BlogProperties.THEME, themeName); + Map properties = new HashMap<>(1); + properties.put(PrimaryProperties.THEME, themeName); + // TODO Refactor: saveProperties => saveProperty optionService.saveProperties(properties, OptionSource.SYSTEM); BaseContentController.THEME = themeName; configuration.setSharedVariable("themeName", themeName); 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 a69f47fc9..58aae5434 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 @@ -3,9 +3,9 @@ package cc.ryanc.halo.web.controller.core; import cc.ryanc.halo.exception.BadRequestException; import cc.ryanc.halo.model.entity.*; import cc.ryanc.halo.model.enums.AttachmentType; -import cc.ryanc.halo.model.properties.BlogProperties; import cc.ryanc.halo.model.enums.OptionSource; import cc.ryanc.halo.model.params.InstallParam; +import cc.ryanc.halo.model.properties.*; import cc.ryanc.halo.model.support.BaseResponse; import cc.ryanc.halo.service.*; import cn.hutool.core.util.StrUtil; @@ -74,7 +74,7 @@ public class InstallController { @GetMapping public String install(Model model) { try { - if (StrUtil.equals(Boolean.TRUE.toString(), optionService.getByProperty(BlogProperties.IS_INSTALL).orElse(Boolean.FALSE.toString()))) { + if (StrUtil.equals(Boolean.TRUE.toString(), optionService.getByProperty(PrimaryProperties.IS_INSTALLED).orElse(Boolean.FALSE.toString()))) { model.addAttribute("isInstall", true); } else { model.addAttribute("isInstall", false); @@ -90,7 +90,7 @@ public class InstallController { public BaseResponse installBlog(@Valid InstallParam installParam) { // TODO Install blog. // Check is installed - boolean isInstalled = Boolean.parseBoolean(optionService.getByProperty(BlogProperties.IS_INSTALL).orElse(Boolean.FALSE.toString())); + boolean isInstalled = Boolean.parseBoolean(optionService.getByProperty(PrimaryProperties.IS_INSTALLED).orElse(Boolean.FALSE.toString())); if (isInstalled) { throw new BadRequestException("该博客已初始化,不能再次安装!"); @@ -161,131 +161,22 @@ public class InstallController { } private void initSettings(InstallParam installParam) { - // Init properties - Map properties = new HashMap<>(11); - properties.put(BlogProperties.IS_INSTALL, Boolean.TRUE.toString()); + // Init default properties + Map properties = new HashMap<>(11); + properties.put(PrimaryProperties.IS_INSTALLED, Boolean.TRUE.toString()); properties.put(BlogProperties.BLOG_LOCALE, installParam.getLocale()); properties.put(BlogProperties.BLOG_TITLE, installParam.getTitle()); properties.put(BlogProperties.BLOG_URL, installParam.getUrl()); - properties.put(BlogProperties.THEME, DEFAULT_THEME_NAME); - properties.put(BlogProperties.BLOG_START, String.valueOf(System.currentTimeMillis())); - properties.put(BlogProperties.SMTP_EMAIL_ENABLE, Boolean.FALSE.toString()); - properties.put(BlogProperties.NEW_COMMENT_NOTICE, Boolean.FALSE.toString()); - properties.put(BlogProperties.COMMENT_PASS_NOTICE, Boolean.FALSE.toString()); - properties.put(BlogProperties.COMMENT_REPLY_NOTICE, Boolean.FALSE.toString()); - properties.put(BlogProperties.ATTACHMENT_TYPE, AttachmentType.LOCAL.getValue().toString()); + properties.put(PrimaryProperties.THEME, DEFAULT_THEME_NAME); + properties.put(PrimaryProperties.BIRTHDAY, String.valueOf(System.currentTimeMillis())); + properties.put(EmailProperties.ENABLED, Boolean.FALSE.toString()); + properties.put(CommentProperties.NEW_NOTICE, Boolean.FALSE.toString()); + properties.put(CommentProperties.PASS_NOTICE, Boolean.FALSE.toString()); + properties.put(CommentProperties.REPLY_NOTICE, Boolean.FALSE.toString()); + properties.put(AttachmentProperties.ATTACHMENT_TYPE, AttachmentType.LOCAL.getValue().toString()); // Create properties optionService.saveProperties(properties, OptionSource.SYSTEM); } -// /** -// * Do install -// * -// * @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") -// @ResponseBody -// @Deprecated -// public JsonResult doInstall(@RequestParam("blogLocale") String blogLocale, -// @RequestParam("blogTitle") String blogTitle, -// @RequestParam("blogUrl") String blogUrl, -// @RequestParam("userName") String userName, -// @RequestParam("userDisplayName") String nickName, -// @RequestParam("userEmail") String userEmail, -// @RequestParam("userPwd") String userPwd, -// HttpServletRequest request) { -// try { -// if (StrUtil.equals("true", OPTIONS.get("is_install"))) { -// return new JsonResult(0, "该博客已初始化,不能再次安装!"); -// } -// // Create new user -// final User user = new User(); -// user.setUsername(userName); -// user.setNickname(StrUtil.isBlank(nickName) ? userName : nickName); -// user.setEmail(userEmail); -// user.setPassword(SecureUtil.md5(userPwd)); -// userService.create(user); -// -// //默认分类 -// Category category = new Category(); -// category.setName("未分类"); -// category.setSlugName("default"); -// category.setDescription("未分类"); -// category = categoryService.create(category); -// -// //第一篇文章 -// final Post post = new Post(); -// final List categories = new ArrayList<>(1); -// categories.add(category); -// post.setTitle("Hello Halo!"); -// post.setOriginalContent("# Hello Halo!\n" + -// "欢迎使用Halo进行创作,删除这篇文章后赶紧开始吧。"); -// post.setFormatContent(MarkdownUtils.renderMarkdown(post.getOriginalContent())); -// post.setSummary("欢迎使用Halo进行创作,删除这篇文章后赶紧开始吧。"); -// post.setStatus(PostStatus.PUBLISHED); -// post.setUrl("hello-halo"); -// post.setDisallowComment(true); -// postService.create(post); -// -// //第一个评论 -// final Comment comment = new Comment(); -// comment.setAuthor("ruibaby"); -// comment.setEmail("i@ryanc.cc"); -// comment.setAuthorUrl("https://ryanc.cc"); -// comment.setIpAddress("127.0.0.1"); -// comment.setGavatarMd5(SecureUtil.md5("i@ryanc.cc")); -// comment.setContent("欢迎,欢迎!"); -// comment.setStatus(CommentStatus.PUBLISHED); -// comment.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"); -// comment.setIsAdmin(false); -// commentService.create(comment); -// -// final Map options = new HashMap<>(); -//// options.put(BlogProperties.IS_INSTALL, TrueFalseEnum.TRUE.getDesc()); -//// options.put(BlogProperties.BLOG_LOCALE, blogLocale); -//// options.put(BlogProperties.BLOG_TITLE, blogTitle); -//// options.put(BlogProperties.BLOG_URL, blogUrl); -//// options.put(BlogProperties.THEME, "anatole"); -//// options.put(BlogProperties.BLOG_START, DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); -//// options.put(BlogProperties.SMTP_EMAIL_ENABLE, TrueFalseEnum.FALSE.getDesc()); -//// options.put(BlogProperties.NEW_COMMENT_NOTICE, TrueFalseEnum.FALSE.getDesc()); -//// options.put(BlogProperties.COMMENT_PASS_NOTICE, TrueFalseEnum.FALSE.getDesc()); -//// options.put(BlogProperties.COMMENT_REPLY_NOTICE, TrueFalseEnum.FALSE.getDesc()); -//// options.put(BlogProperties.ATTACHMENT_TYPE, AttachLocationEnum.SERVER.getDesc()); -//// optionService.saveOptions(options); -// -// //更新日志 -//// logsService.save(LogsRecord.INSTALL, "安装成功,欢迎使用Halo。", request); -// -// final Menu menuIndex = new Menu(); -// menuIndex.setName("首页"); -// menuIndex.setUrl("/"); -// menuIndex.setSort(1); -// menuService.create(menuIndex); -// -// final Menu menuArchive = new Menu(); -// menuArchive.setName("归档"); -// menuArchive.setUrl("/archives"); -// menuArchive.setSort(2); -// menuService.create(menuArchive); -// -// OPTIONS.clear(); -// OPTIONS.putAll(optionService.listOptions()); -// configuration.setSharedVariable("options", OPTIONS); -//// configuration.setSharedVariable("user", userService.findUser()); -// } catch (Exception e) { -// log.error(e.getMessage()); -// return new JsonResult(0, e.getMessage()); -// } -// return new JsonResult(1, "安装成功!"); -// } }