package org.freezo.website.controller; import javax.servlet.http.HttpServletRequest; import org.freezo.domain.PostReporitory; import org.freezo.domain.Website; import org.freezo.website.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Profile("web") @Controller public class HomeController { @Autowired private PostReporitory repository; @Value("${freezo.web.listing.posts:5}") private int posts; @ModelAttribute("website") public Website getUser(final HttpServletRequest request) { return (Website) request.getAttribute(Constants.WEBSITE_ATTRIBUTE_NAME); } @RequestMapping("/") public String index(final Model model, @ModelAttribute("website") final Website website) { model.addAttribute("posts", repository.findByWebsite(website, new PageRequest(0, posts))); model.addAttribute("baseUrl", ""); return "index"; } @RequestMapping("/page/{page}") public String indexWithPagination(final Model model, @ModelAttribute("website") final Website website, @PathVariable("page") final int page) { model.addAttribute("posts", repository.findByWebsite(website, new PageRequest(page - 1, posts))); model.addAttribute("baseUrl", ""); return "index"; } @RequestMapping("/search/label/{label}") public String label(final Model model, @ModelAttribute("website") final Website website, @PathVariable("label") final String label) { model.addAttribute("posts", repository.findByWebsiteAndLabelsIn(website, label, new PageRequest(0, posts))); model.addAttribute("baseUrl", String.format("/search/label/%s", label)); return "index"; } @RequestMapping("/search/label/{label}/page/{page}") public String label(final Model model, @ModelAttribute("website") final Website website, @PathVariable("label") final String label, @PathVariable("page") final int page) { model.addAttribute("posts", repository.findByWebsiteAndLabelsIn(website, label, new PageRequest(page - 1, posts))); model.addAttribute("baseUrl", String.format("/search/label/%s", label)); return "index"; } @RequestMapping("/{slug}") public String page(@ModelAttribute("website") final Website website) { return "post"; } }