/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.web; import com.neblina.balero.domain.Blog; import com.neblina.balero.service.CommentService; import com.neblina.balero.service.PropertyService; import com.neblina.balero.service.UserService; import com.neblina.balero.service.repository.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.util.Locale; @Controller @RequestMapping("/blog") public class BlogController { private static final Logger log = LogManager.getLogger(BlogController.class.getName()); @Autowired private BlogRepository blogRepository; @Autowired private CommentService commentService; @Autowired private PropertyService propertyService; @Autowired private UserService userService; @RequestMapping(value = "" ) String blogIndex(Model model, Locale locale) { Pageable lastTen = new PageRequest(0, 10); model.addAttribute("posts", blogRepository.findByStatusAndCode("success", locale.getLanguage(), null)); model.addAttribute("lastTen", blogRepository.findByStatusAndCode("success", locale.getLanguage(), lastTen)); return propertyService.getTemplate() + "/blog"; } @RequestMapping(value = "/{permalink}", method = RequestMethod.GET) String postIndex(Model model, Locale locale, @PathVariable("permalink") String permalink, @CookieValue(value = "commentCookie", defaultValue = "init") String commentCookie) { String username = userService.getMyUsername(); model.addAttribute("comments", commentService.findAllByPostPermalink(permalink)); model.addAttribute("properties", propertyService.findOneById(1L)); model.addAttribute("username", username); if(!commentCookie.equals("commented")) { model.addAttribute("addComment", 1); } try { Blog blog = blogRepository.findOneByPermalink(permalink); if(blog.getPermalink() == null) { throw new Exception("Error 404"); } blog.setHits(blog.getHits()+1); blogRepository.save(blog); model.addAttribute("posts", blogRepository.findOneByPermalink(permalink)); } catch (Exception e) { model.addAttribute("error404", 1); } return propertyService.getTemplate() + "/post"; } @RequestMapping(value = "/{permalink}", method = RequestMethod.POST) String postAddComment(@PathVariable("permalink") String permalink, @RequestParam("content") String content, Locale locale, HttpServletResponse response) { log.debug("Request method POST -> /blog/" + permalink); String username = userService.getMyUsername(); Cookie userCookie = new Cookie("commentCookie", "commented"); response.addCookie(userCookie); commentService.createComment( content, locale.getLanguage(), username, permalink ); return "redirect:/blog/" + permalink; } }