Merge pull request #41 from JohnNiang/dev

Enhance utils
pull/56/head
RYAN0UP_ 2018-10-31 13:43:01 +08:00 committed by GitHub
commit bc322b271f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 75 additions and 27 deletions

View File

@ -55,6 +55,12 @@
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>

View File

@ -1,11 +1,14 @@
package cc.ryanc.halo.utils;
import cc.ryanc.halo.model.domain.Comment;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import cc.ryanc.halo.model.domain.Comment;
/**
* <pre>
*
@ -23,6 +26,10 @@ public class CommentUtil {
* @return List
*/
public static List<Comment> getComments(List<Comment> commentsRoot) {
if (CollectionUtils.isEmpty(commentsRoot)) {
return Collections.emptyList();
}
List<Comment> commentsResult = new ArrayList<>();
for (Comment comment : commentsRoot) {
@ -47,6 +54,12 @@ public class CommentUtil {
* @return List
*/
private static List<Comment> getChild(Long id, List<Comment> commentsRoot) {
Assert.notNull(id, "comment id must not be null");
if (CollectionUtils.isEmpty(commentsRoot)) {
return null;
}
List<Comment> commentsChild = new ArrayList<>();
for (Comment comment : commentsRoot) {
if (comment.getCommentParent() != 0) {

View File

@ -16,6 +16,8 @@ import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.WireFeedOutput;
import io.github.biezhi.ome.OhMyEmail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.Assert;
import org.springframework.util.ResourceUtils;
import javax.imageio.ImageIO;
@ -109,7 +111,8 @@ public class HaloUtils {
*/
public static Date getCreateTime(String srcPath) {
Path path = Paths.get(srcPath);
BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class,
LinkOption.NOFOLLOW_LINKS);
BasicFileAttributes attr;
try {
attr = basicview.readAttributes();
@ -161,7 +164,8 @@ public class HaloUtils {
}
theme = new Theme();
theme.setThemeName(file.getName());
File optionsPath = new File(themesPath.getAbsolutePath(), file.getName() + "/module/options.ftl");
File optionsPath = new File(themesPath.getAbsolutePath(),
file.getName() + "/module/options.ftl");
if (optionsPath.exists()) {
theme.setHasOptions(true);
} else {
@ -220,8 +224,7 @@ public class HaloUtils {
}
/**
*
* page_xxx
* page_xxx
*
* @return List
*/
@ -284,6 +287,8 @@ public class HaloUtils {
* @throws FeedException
*/
public static String getRss(List<Post> posts) throws FeedException {
Assert.notEmpty(posts, "posts must not be empty");
Channel channel = new Channel("rss_2.0");
if (null == HaloConst.OPTIONS.get(BlogPropertiesEnum.BLOG_TITLE.getProp())) {
channel.setTitle("");
@ -318,7 +323,8 @@ public class HaloUtils {
value = new String(xmlChar);
content.setValue(value);
item.setContent(content);
item.setLink(HaloConst.OPTIONS.get(BlogPropertiesEnum.BLOG_URL.getProp()) + "/archives/" + post.getPostUrl());
item.setLink(
HaloConst.OPTIONS.get(BlogPropertiesEnum.BLOG_URL.getProp()) + "/archives/" + post.getPostUrl());
item.setPubDate(post.getPostDate());
items.add(item);
}
@ -334,12 +340,15 @@ public class HaloUtils {
* @return String
*/
public static String getSiteMap(List<Post> posts) {
Assert.notEmpty(posts, "post mut not be empty");
String head = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
String urlBody = "";
String urlItem;
String urlPath = HaloConst.OPTIONS.get(BlogPropertiesEnum.BLOG_URL.getProp()) + "/archives/";
for (Post post : posts) {
urlItem = "<url><loc>" + urlPath + post.getPostUrl() + "</loc><lastmod>" + DateUtil.format(post.getPostDate(), "yyyy-MM-dd'T'HH:mm:ss.SSSXXX") + "</lastmod>" + "</url>";
urlItem = "<url><loc>" + urlPath + post.getPostUrl() + "</loc><lastmod>"
+ DateUtil.format(post.getPostDate(), "yyyy-MM-dd'T'HH:mm:ss.SSSXXX") + "</lastmod>" + "</url>";
urlBody += urlItem;
}
return head + urlBody + "</urlset>";
@ -365,6 +374,8 @@ public class HaloUtils {
* @return String
*/
public static String getHttpResponse(String enterUrl) {
Assert.hasText(enterUrl, "enter url must not be blank");
BufferedReader in = null;
StringBuffer result = null;
try {
@ -396,7 +407,6 @@ public class HaloUtils {
return null;
}
/**
*
*
@ -406,6 +416,10 @@ public class HaloUtils {
* @return String
*/
public static String baiduPost(String blogUrl, String token, String urls) {
Assert.hasText(blogUrl, "blog url must not be blank");
Assert.hasText(token, "token must not be blank");
Assert.hasText(urls, "urls must not be blank");
String url = "http://data.zz.baidu.com/urls?site=" + blogUrl + "&token=" + token;
String result = "";
PrintWriter out = null;

View File

@ -238,7 +238,7 @@
<span class="label bg-red"><@spring.message code='common.status.recycle-bin' /></span>
</#if>
</td>
<td>${post.postDate?if_exists?string("yyyy-MM-dd HH:mm")}</td>
<td><@common.timeline datetime="${post.postDate?if_exists}"?datetime /></td>
</tr>
</#list>
<#else>
@ -310,7 +310,7 @@
<#break >
</#switch>
</td>
<td>${comment.commentDate?string("yyyy-MM-dd HH:mm")}</td>
<td><@common.timeline datetime="${comment.commentDate}"?datetime /></td>
</tr>
</#list>
<#else>

View File

@ -35,7 +35,7 @@
</div>
<h4>
${comment.commentAuthor}
<small> ${comment.commentDate?string("yyyy/MM/dd HH:mm")}</small>
<small> <@common.timeline datetime="${comment.commentDate}"?datetime /></small>
</h4>
<object>${comment.commentContent}</object>
</a>

View File

@ -1,4 +1,5 @@
<#macro head>
<#import "/common/macro/common_macro.ftl" as common>
<!DOCTYPE html>
<html>
<head>

View File

@ -32,3 +32,17 @@
<meta name="360-site-verification" content="${options.blog_verification_qihu}" />
</#if>
</#macro>
<#-- 时间格式化 几...前 -->
<#macro timeline datetime=.now>
<#assign ct = (.now?long-datetime?long)/1000>
<#if ct gte 31104000>${(ct/31104000)?int}年前
<#t><#elseif ct gte 2592000>${(ct/2592000)?int}个月前
<#t><#elseif ct gte 86400*2>${(ct/86400)?int}天前
<#t><#elseif ct gte 86400>昨天
<#t><#elseif ct gte 3600>${(ct/3600)?int}小时前
<#t><#elseif ct gte 60>${(ct/60)?int}分钟前
<#t><#elseif ct gt 0>${ct?int}秒前
<#t><#else>刚刚
</#if>
</#macro>