package org.xcolab.view.pages.content; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.xcolab.client.contents.ContentsClient; import org.xcolab.client.contents.exceptions.ContentNotFoundException; import org.xcolab.client.contents.pojo.ContentArticle; import org.xcolab.client.contents.pojo.ContentPage; import org.xcolab.client.members.pojo.Member; import org.xcolab.view.errors.ErrorText; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Controller public class ContentController { @GetMapping("/page/{pageTitle}") public String showContentPage(HttpServletRequest request, HttpServletResponse response, Model model, Member member, @PathVariable String pageTitle) throws IOException { try { final ContentPage contentPage = ContentsClient.getContentPage(pageTitle); model.addAttribute("contentPage", contentPage); final ContentArticle contentArticle = ContentsClient .getContentArticle(contentPage.getContentArticleId()); if (!contentArticle.canView(member)) { return ErrorText.ACCESS_DENIED.flashAndReturnView(request); } model.addAttribute("contentArticleId", contentPage.getContentArticleId()); if (contentPage.getMenuArticleId() != null) { model.addAttribute("menuArticleId", contentPage.getMenuArticleId()); } //TODO: allow different active pages model.addAttribute("_activePageLink", "about"); } catch (ContentNotFoundException e) { return ErrorText.PAGE_NOT_FOUND.flashAndReturnView(request); } return "content/contentPage"; } @GetMapping("/contentwidget") public String contentDisplay(HttpServletRequest request, Model model, @RequestParam Long contentArticleId) { model.addAttribute("articleId", contentArticleId); return "content/widget"; } }