Merge branch 'v1' of C:\Users\RYAN0UP\Desktop\halo with conflicts.

pull/137/head
ruibaby 2019-03-22 16:34:08 +08:00
parent 2184102c68
commit 1c0b225dee
4 changed files with 34 additions and 54 deletions

View File

@ -94,10 +94,12 @@ public class HaloUtils {
* *
* @return default page size * @return default page size
*/ */
public static int getDefaultPageSize() { public static int getDefaultPageSize(int pageSize) {
return Integer.valueOf(OPTIONS.getOrDefault( if (StrUtil.isNotBlank(OPTIONS.get(BlogProperties.INDEX_POSTS))) {
BlogProperties.INDEX_POSTS.getValue(), return Integer.parseInt(OPTIONS.get(BlogProperties.INDEX_POSTS));
String.valueOf(DEFAULT_PAGE_SIZE))); }
return pageSize;
} }
/** /**

View File

@ -5,9 +5,11 @@ import cc.ryanc.halo.model.enums.BlogProperties;
import cc.ryanc.halo.model.enums.PostStatus; import cc.ryanc.halo.model.enums.PostStatus;
import cc.ryanc.halo.model.enums.PostType; import cc.ryanc.halo.model.enums.PostType;
import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.service.PostService;
import cc.ryanc.halo.utils.HaloUtils;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import javafx.geometry.Pos;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@ -57,15 +59,7 @@ public class ContentFeedController {
} }
final Sort sort = new Sort(Sort.Direction.DESC, "postDate"); final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
final Pageable pageable = PageRequest.of(0, Integer.parseInt(rssPosts), sort); final Pageable pageable = PageRequest.of(0, Integer.parseInt(rssPosts), sort);
final Page<Post> postsPage = postService.pageBy(PostStatus.PUBLISHED, PostType.POST, pageable).map(post -> { model.addAttribute("posts", buildPosts(pageable));
if (StrUtil.isNotEmpty(post.getPassword())) {
post.setFormatContent("该文章为加密文章");
post.setSummary("该文章为加密文章");
}
return post;
});
final List<Post> posts = postsPage.getContent();
model.addAttribute("posts", posts);
final Template template = freeMarker.getConfiguration().getTemplate("common/web/rss.ftl"); final Template template = freeMarker.getConfiguration().getTemplate("common/web/rss.ftl");
return FreeMarkerTemplateUtils.processTemplateIntoString(template, model); return FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
} }
@ -81,21 +75,10 @@ public class ContentFeedController {
@GetMapping(value = {"atom", "atom.xml"}, produces = "application/xml;charset=UTF-8") @GetMapping(value = {"atom", "atom.xml"}, produces = "application/xml;charset=UTF-8")
@ResponseBody @ResponseBody
public String atom(Model model) throws IOException, TemplateException { public String atom(Model model) throws IOException, TemplateException {
String rssPosts = OPTIONS.get(BlogProperties.RSS_POSTS.getValue()); int pageSize = HaloUtils.getDefaultPageSize(20);
if (StrUtil.isBlank(rssPosts)) { final Sort sort = new Sort(Sort.Direction.DESC, "createTime");
rssPosts = "20"; final Pageable pageable = PageRequest.of(0, pageSize, sort);
} model.addAttribute("posts", buildPosts(pageable));
final Sort sort = new Sort(Sort.Direction.DESC, "postDate");
final Pageable pageable = PageRequest.of(0, Integer.parseInt(rssPosts), sort);
final Page<Post> postsPage = postService.pageBy(PostStatus.PUBLISHED, PostType.POST, pageable).map(post -> {
if (StrUtil.isNotEmpty(post.getPassword())) {
post.setFormatContent("该文章为加密文章");
post.setSummary("该文章为加密文章");
}
return post;
});
final List<Post> posts = postsPage.getContent();
model.addAttribute("posts", posts);
final Template template = freeMarker.getConfiguration().getTemplate("common/web/atom.ftl"); final Template template = freeMarker.getConfiguration().getTemplate("common/web/atom.ftl");
return FreeMarkerTemplateUtils.processTemplateIntoString(template, model); return FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
} }
@ -111,15 +94,7 @@ public class ContentFeedController {
@GetMapping(value = {"sitemap", "sitemap.xml"}, produces = "application/xml;charset=UTF-8") @GetMapping(value = {"sitemap", "sitemap.xml"}, produces = "application/xml;charset=UTF-8")
@ResponseBody @ResponseBody
public String sitemapXml(Model model) throws IOException, TemplateException { public String sitemapXml(Model model) throws IOException, TemplateException {
final Page<Post> postsPage = postService.pageBy(PostStatus.PUBLISHED, PostType.POST, null).map(post -> { model.addAttribute("posts", buildPosts(null));
if (StrUtil.isNotEmpty(post.getPassword())) {
post.setFormatContent("该文章为加密文章");
post.setSummary("该文章为加密文章");
}
return post;
});
final List<Post> posts = postsPage.getContent();
model.addAttribute("posts", posts);
final Template template = freeMarker.getConfiguration().getTemplate("common/web/sitemap_xml.ftl"); final Template template = freeMarker.getConfiguration().getTemplate("common/web/sitemap_xml.ftl");
return FreeMarkerTemplateUtils.processTemplateIntoString(template, model); return FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
} }
@ -132,15 +107,7 @@ public class ContentFeedController {
*/ */
@GetMapping(value = "sitemap.html", produces = {"text/html"}) @GetMapping(value = "sitemap.html", produces = {"text/html"})
public String sitemapHtml(Model model) { public String sitemapHtml(Model model) {
final Page<Post> postsPage = postService.pageBy(PostStatus.PUBLISHED, PostType.POST, null).map(post -> { model.addAttribute("posts", buildPosts(null));
if (StrUtil.isNotEmpty(post.getPassword())) {
post.setFormatContent("该文章为加密文章");
post.setSummary("该文章为加密文章");
}
return post;
});
final List<Post> posts = postsPage.getContent();
model.addAttribute("posts", posts);
return "common/web/sitemap_html"; return "common/web/sitemap_html";
} }
@ -158,4 +125,20 @@ public class ContentFeedController {
final Template template = freeMarker.getConfiguration().getTemplate("common/web/robots.ftl"); final Template template = freeMarker.getConfiguration().getTemplate("common/web/robots.ftl");
return FreeMarkerTemplateUtils.processTemplateIntoString(template, model); return FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
} }
/**
* Build posts for feed
* @param pageable pageable
* @return List<Post>
*/
private List<Post> buildPosts(Pageable pageable){
final Page<Post> postsPage = postService.pageBy(PostStatus.PUBLISHED, PostType.POST, pageable).map(post -> {
if (StrUtil.isNotEmpty(post.getPassword())) {
post.setFormatContent("该文章为加密文章");
post.setSummary("该文章为加密文章");
}
return post;
});
return postsPage.getContent();
}
} }

View File

@ -65,14 +65,9 @@ public class ContentIndexController extends BaseContentController {
@SortDefault(sort = "createTime", direction = DESC) @SortDefault(sort = "createTime", direction = DESC)
}) Sort sort) { }) Sort sort) {
log.debug("Requested index page, sort info: [{}]", sort); log.debug("Requested index page, sort info: [{}]", sort);
int pageSize = HaloUtils.getDefaultPageSize(10);
int size = HaloUtils.getDefaultPageSize(); Pageable pageable = PageRequest.of(page - 1, pageSize, sort);
Pageable pageable = PageRequest.of(page - 1, size, sort);
Page<PostListVO> posts = postService.pageListVoBy(PostStatus.PUBLISHED, PostType.POST, pageable); Page<PostListVO> posts = postService.pageListVoBy(PostStatus.PUBLISHED, PostType.POST, pageable);
if (null == posts) {
// TODO There will never be null
return this.renderNotFound();
}
int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3); int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3);
model.addAttribute("is_index", true); model.addAttribute("is_index", true);
model.addAttribute("posts", posts); model.addAttribute("posts", posts);

View File

@ -81,7 +81,7 @@ public class ContentTagController extends BaseContentController {
if (null == tag) { if (null == tag) {
return this.renderNotFound(); return this.renderNotFound();
} }
int size = HaloUtils.getDefaultPageSize(); int size = HaloUtils.getDefaultPageSize(10);
final Pageable pageable = PageRequest.of(page - 1, size, sort); final Pageable pageable = PageRequest.of(page - 1, size, sort);
// TODO get posts by tag // TODO get posts by tag