List of usage examples for com.liferay.portal.kernel.theme ThemeDisplay getScopeGroupId
public long getScopeGroupId()
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * The default render method./* w w w . j ava 2 s. c o m*/ * * @param request the request * @param response the response * @param model the model * @return the view */ @RenderMapping() public String showIdea(RenderRequest request, RenderResponse response, final ModelMap model) throws PortalException, SystemException { ThemeDisplay themeDisplay = getThemeDisplay(request); String ideaType = ParamUtil.getString(request, "type", "public"); String returnView = "view_public"; //If a user trying to accsess the private part of an idea when not sign in. if (ideaType.equals("private") && !themeDisplay.isSignedIn()) { returnView = "idea_not_sign_in"; } else { long scopeGroupId = themeDisplay.getScopeGroupId(); long companyId = themeDisplay.getCompanyId(); long userId = themeDisplay.getUserId(); boolean isSignedIn = themeDisplay.isSignedIn(); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); Layout ideaLayout = getFriendlyURLLayout(scopeGroupId, themeDisplay.getLayout().isPrivateLayout()); long ideaPlid = ideaLayout.getPlid(); model.addAttribute("ideaPlid", ideaPlid); int maxCommentCountDisplay = ParamUtil.getInteger(request, "maxCommentCountDisplay", defaultCommentCount); boolean moreComments = ParamUtil.getString(request, "moreComments") != null; if (moreComments) { maxCommentCountDisplay += defaultCommentCount; } if (!urlTitle.equals("")) { Idea idea = ideaService.findIdeaByUrlTitle(urlTitle); if (idea != null) { boolean isIdeaUserLiked = ideaService.getIsIdeaUserLiked(companyId, scopeGroupId, userId, urlTitle); boolean isIdeaUserFavorite = ideaService.getIsIdeaUserFavorite(companyId, scopeGroupId, userId, urlTitle); List<CommentItemVO> commentsList = null; if (ideaType.equals("private")) { commentsList = ideaService.getPrivateComments(idea); } else { commentsList = ideaService.getPublicComments(idea); } if (idea.getIdeaContentPrivate() != null) { String ideTansportor = idea.getIdeaContentPrivate().getIdeTansportor(); if (ideTansportor != null && !ideTansportor.isEmpty()) { model.addAttribute("tansportor", ideTansportor); } } IdeaPermissionChecker ideaPermissionChecker = ideaPermissionCheckerService .getIdeaPermissionChecker(scopeGroupId, userId, idea); model.addAttribute("commentCount", commentsList.size()); commentsList = commentsList.subList(0, Math.min(maxCommentCountDisplay, commentsList.size())); idea = IdeaPortletUtil.replaceBreaklines(idea); model.addAttribute("idea", idea); model.addAttribute("commentsList", commentsList); model.addAttribute("commentsDelta", 1); model.addAttribute("isIdeaUserFavorite", isIdeaUserFavorite); model.addAttribute("isIdeaUserLiked", isIdeaUserLiked); model.addAttribute("urlTitle", urlTitle); model.addAttribute("userId", userId); model.addAttribute("isSignedIn", isSignedIn); model.addAttribute("ideaPermissionChecker", ideaPermissionChecker); model.addAttribute("ideaType", ideaType); model.addAttribute("maxCommentCountDisplay", maxCommentCountDisplay); model.addAttribute("defaultCommentCount", defaultCommentCount); model.addAttribute("ideaPortletName", IdeaPortletsConstants.PORTLET_NAME_IDEA_PORTLET); model.addAttribute("bariumUrl", bariumUrl); if (ideaType.equals("private") && (ideaPermissionChecker.getHasPermissionViewIdeaPrivate() || idea.getUserId() == userId)) { returnView = "view_private"; } // If a user trying to access the public or private part of an idea that still is private. // The user dose not have premmisions and is not the creator of the idea. // Showing 404 view. if (!idea.isPublic() && !(ideaPermissionChecker.getHasPermissionViewIdeaPrivate() || idea.getUserId() == userId)) { HttpServletResponse httpServletResponse = PortalUtil.getHttpServletResponse(response); httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND); returnView = "idea_404"; } } else { HttpServletResponse httpServletResponse = getHttpServletResponse(response); httpServletResponse.setStatus(HttpServletResponse.SC_NOT_FOUND); returnView = "idea_404"; } } } return returnView; }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Method handling Action request./*from w w w . j a va 2 s . co m*/ * * @param request the request * @param response the response * @param model the model */ @ActionMapping(params = "action=addComment") public final void addComment(ActionRequest request, ActionResponse response, final ModelMap model) { ThemeDisplay themeDisplay = getThemeDisplay(request); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); Idea idea = ideaService.findIdeaByUrlTitle(urlTitle); long userId = themeDisplay.getUserId(); long groupId = themeDisplay.getScopeGroupId(); IdeaContentType ideaContentType = IdeaContentType.valueOf(ParamUtil.getString(request, "ideaContentType")); String comment = ParamUtil.getString(request, "comment", ""); if (!isAllowedToDoAction(request, idea, Action.ADD_COMMENT, ideaContentType)) { LOGGER.error("User is denied to add comment. idea.getId(): " + idea.getId() + ", idea.getUserId(): " + idea.getUserId() + ", idea.getTitle(): " + idea.getTitle()); sendRedirectToContextRoot(response); return; } if (!comment.equals("")) { try { ServiceContext serviceContext = ServiceContextFactory.getInstance(Idea.class.getName(), request); //Add a mbMessage if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PUBLIC) { ideaService.addMBMessage(idea, serviceContext, groupId, userId, comment, idea.getIdeaContentPublic().getId()); //Send email notification. ideaService.sendEmailNotification(idea, true); } else if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { ideaService.addMBMessage(idea, serviceContext, groupId, userId, comment, idea.getIdeaContentPrivate().getId()); Integer commentsCount = idea.getCommentsCount(); commentsCount = commentsCount != null ? commentsCount : ideaService.getPrivateCommentsCount(idea); idea.setCommentsCount(commentsCount + 1); idea.setLastPrivateCommentDate(new Date()); idea = ideaService.save(idea); //Send email notification. ideaService.sendEmailNotification(idea, false); } } catch (PortalException e) { LOGGER.error(e.getMessage(), e); } catch (SystemException e) { LOGGER.error(e.getMessage(), e); } } if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { response.setRenderParameter("type", "private"); } response.setRenderParameter("urlTitle", urlTitle); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
private boolean isAllowedToDoAction(PortletRequest request, Idea idea, Action action, IdeaContentType ideaContentType) { // Initialize variables ThemeDisplay themeDisplay = getThemeDisplay(request); long userId = themeDisplay.getUserId(); long groupId = themeDisplay.getScopeGroupId(); IdeaPermissionChecker ideaPermissionChecker = ideaPermissionCheckerService.getIdeaPermissionChecker(groupId, userId, idea);// w w w . ja va2 s . c o m // Then check for necessary permissions. boolean publicAndPublicPermission; boolean privateAndPrivatePermission; boolean isSignedIn; boolean publicPart; if (ideaContentType.equals(IdeaContentType.IDEA_CONTENT_TYPE_PUBLIC)) { publicPart = true; } else if (ideaContentType.equals(IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE)) { publicPart = false; } else { throw new IllegalArgumentException("Unexpected IdeaContentType."); } switch (action) { case ADD_COMMENT: isSignedIn = themeDisplay.isSignedIn(); if (!isSignedIn) { return false; } if (idea.getUserId() == userId) { return true; } publicAndPublicPermission = publicPart && ideaPermissionChecker.getHasPermissionAddCommentPublic(); privateAndPrivatePermission = !publicPart && ideaPermissionChecker.getHasPermissionAddCommentPrivate(); break; case UPLOAD_FILE: isSignedIn = themeDisplay.isSignedIn(); if (!isSignedIn) { return false; } publicAndPublicPermission = publicPart && ideaPermissionChecker.getHasPermissionAddCommentPublic(); privateAndPrivatePermission = !publicPart && ideaPermissionChecker.getHasPermissionAddCommentPrivate(); break; case VIEW_IDEA: publicAndPublicPermission = publicPart && ideaPermissionChecker.getHasPermissionViewIdeaPublic(); privateAndPrivatePermission = !publicPart && ideaPermissionChecker.getHasPermissionViewIdeaPrivate(); break; default: throw new IllegalArgumentException("Unexpected action: " + action); } boolean necessaryPermissions = publicAndPublicPermission || privateAndPrivatePermission; return necessaryPermissions; }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Method handling Action request./*from w w w . ja v a 2 s. co m*/ * * @param request the request * @param response the response * @param model the model */ @ActionMapping(params = "action=addFavorite") public final void addFavorite(ActionRequest request, ActionResponse response, final ModelMap model) { LOGGER.info("addFavorite"); ThemeDisplay themeDisplay = getThemeDisplay(request); long companyId = themeDisplay.getCompanyId(); long groupId = themeDisplay.getScopeGroupId(); long userId = themeDisplay.getUserId(); IdeaContentType ideaContentType = IdeaContentType.valueOf(ParamUtil.getString(request, "ideaContentType")); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); if (themeDisplay.isSignedIn()) { ideaService.addFavorite(companyId, groupId, userId, urlTitle); } if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { response.setRenderParameter("type", "private"); } response.setRenderParameter("urlTitle", urlTitle); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Method handling Action request./*from w w w . j ava2s . c o m*/ * * @param request the request * @param response the response * @param model the model */ @ActionMapping(params = "action=addLike") public final void addLike(ActionRequest request, ActionResponse response, final ModelMap model) { LOGGER.info("addLike"); ThemeDisplay themeDisplay = getThemeDisplay(request); long companyId = themeDisplay.getCompanyId(); long groupId = themeDisplay.getScopeGroupId(); long userId = themeDisplay.getUserId(); IdeaContentType ideaContentType = IdeaContentType.valueOf(ParamUtil.getString(request, "ideaContentType")); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); if (themeDisplay.isSignedIn()) { ideaService.addLike(companyId, groupId, userId, urlTitle); } if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { response.setRenderParameter("type", "private"); } response.setRenderParameter("urlTitle", urlTitle); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Method handling Action request./*from www . ja va2s. c o m*/ * * @param request the request * @param response the response * @param model the model */ @ActionMapping(params = "action=removeFavorite") public final void removeFavorite(ActionRequest request, ActionResponse response, final ModelMap model) { LOGGER.info("removeFavorite"); ThemeDisplay themeDisplay = getThemeDisplay(request); long companyId = themeDisplay.getCompanyId(); long groupId = themeDisplay.getScopeGroupId(); long userId = themeDisplay.getUserId(); IdeaContentType ideaContentType = IdeaContentType.valueOf(ParamUtil.getString(request, "ideaContentType")); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); if (themeDisplay.isSignedIn()) { ideaService.removeFavorite(companyId, groupId, userId, urlTitle); } if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { response.setRenderParameter("type", "private"); } response.setRenderParameter("urlTitle", urlTitle); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Method handling Action request.//from w w w . j av a 2 s . co m * * @param request the request * @param response the response * @param model the model */ @ActionMapping(params = "action=removeLike") public final void removeLike(ActionRequest request, ActionResponse response, final ModelMap model) { LOGGER.info("removeLike"); ThemeDisplay themeDisplay = getThemeDisplay(request); long companyId = themeDisplay.getCompanyId(); long groupId = themeDisplay.getScopeGroupId(); long userId = themeDisplay.getUserId(); IdeaContentType ideaContentType = IdeaContentType.valueOf(ParamUtil.getString(request, "ideaContentType")); String urlTitle = ParamUtil.getString(request, "urlTitle", ""); if (themeDisplay.isSignedIn()) { ideaService.removeLike(companyId, groupId, userId, urlTitle); } if (ideaContentType == IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE) { response.setRenderParameter("type", "private"); } response.setRenderParameter("urlTitle", urlTitle); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewController.java
License:Open Source License
/** * Upload file action.//www. ja v a 2s. com * * @param request the request * @param response the response * @param model the model * @throws FileUploadException the file upload exception */ @ActionMapping(params = "action=uploadFile") public void uploadFile(ActionRequest request, ActionResponse response, Model model) throws FileUploadException, SystemException, PortalException { ThemeDisplay themeDisplay = getThemeDisplay(request); long scopeGroupId = themeDisplay.getScopeGroupId(); long userId = themeDisplay.getUserId(); String urlTitle = request.getParameter("urlTitle"); String fileType = request.getParameter("fileType"); boolean publicIdea; if (fileType.equals("public")) { publicIdea = true; } else if (fileType.equals("private")) { publicIdea = false; } else { throw new IllegalArgumentException("Unknown filetype: " + fileType); } //TODO ondig slagning? Cacha? Idea idea = ideaService.findIdeaByUrlTitle(urlTitle); //TODO Kan det inte finnas flera med samma titel i olika communities? IdeaContentType ideaContentType = publicIdea ? IdeaContentType.IDEA_CONTENT_TYPE_PUBLIC : IdeaContentType.IDEA_CONTENT_TYPE_PRIVATE; if (!isAllowedToDoAction(request, idea, Action.UPLOAD_FILE, ideaContentType)) { sendRedirectToContextRoot(response); return; } boolean mayUploadFile = idea.getUserId() == userId; IdeaPermissionChecker ideaPermissionChecker = ideaPermissionCheckerService .getIdeaPermissionChecker(scopeGroupId, userId, idea); if (!mayUploadFile) { if (publicIdea) { mayUploadFile = ideaPermissionChecker.isHasPermissionAddDocumentPublic(); } else { mayUploadFile = ideaPermissionChecker.isHasPermissionAddDocumentPrivate(); } } if (mayUploadFile) { response.setRenderParameter("urlTitle", urlTitle); PortletFileUpload p = new PortletFileUpload(); try { FileItemIterator itemIterator = p.getItemIterator(request); while (itemIterator.hasNext()) { FileItemStream fileItemStream = itemIterator.next(); if (fileItemStream.getFieldName().equals("file")) { InputStream is = fileItemStream.openStream(); BufferedInputStream bis = new BufferedInputStream(is); String fileName = fileItemStream.getName(); String contentType = fileItemStream.getContentType(); ideaService.uploadFile(idea, publicIdea, fileName, contentType, bis); } } } catch (FileUploadException e) { doExceptionStuff(e, response, model); return; } catch (IOException e) { doExceptionStuff(e, response, model); return; } catch (se.vgregion.service.innovationsslussen.exception.FileUploadException e) { doExceptionStuff(e, response, model); return; } catch (RuntimeException e) { Throwable lastCause = Util.getLastCause(e); if (lastCause instanceof SQLException) { SQLException nextException = ((SQLException) lastCause).getNextException(); if (nextException != null) { LOGGER.error(nextException.getMessage(), nextException); } } } finally { response.setRenderParameter("ideaType", fileType); } } else { throw new FileUploadException("The user is not authorized to upload to this idea instance."); } response.setRenderParameter("urlTitle", urlTitle); response.setRenderParameter("type", fileType); response.setRenderParameter("showView", "showIdea"); }
From source file:se.vgregion.portal.innovationsslussen.idea.controller.IdeaViewControllerTest.java
License:Open Source License
@Before public void setUp() { ideaService = Mockito.mock(IdeaService.class); ideaPermissionCheckerService = Mockito.mock(IdeaPermissionCheckerService.class); ideaSettingsService = Mockito.mock(IdeaSettingsService.class); controller = new IdeaViewController(ideaService, ideaPermissionCheckerService, ideaSettingsService) { @Override/*from w w w . jav a 2 s .c o m*/ protected HttpServletResponse getHttpServletResponse(RenderResponse response) { return Mockito.mock(HttpServletResponse.class); } @Override protected Layout getFriendlyURLLayout(long scopeGroupId, boolean priv) throws SystemException, PortalException { return Mockito.mock(Layout.class); } }; request = Mockito.mock(RenderRequest.class); response = Mockito.mock(RenderResponse.class); actionRequest = Mockito.mock(ActionRequest.class); actionResponse = Mockito.mock(ActionResponse.class); modelMap = Mockito.mock(ModelMap.class); ThemeDisplay themeDisplay = Mockito.mock(ThemeDisplay.class); Mockito.when(request.getAttribute(WebKeys.THEME_DISPLAY)).thenReturn(themeDisplay); Mockito.when(actionRequest.getAttribute(WebKeys.THEME_DISPLAY)).thenReturn(themeDisplay); Mockito.when(themeDisplay.getScopeGroupId()).thenReturn(1l); User user = Mockito.mock(User.class); Mockito.when(themeDisplay.getUser()).thenReturn(user); Mockito.when(themeDisplay.getUserId()).thenReturn(1l); Layout layout = Mockito.mock(Layout.class); Mockito.when(layout.isPrivateLayout()).thenReturn(true); Mockito.when(themeDisplay.getLayout()).thenReturn(layout); }
From source file:se.vgregion.portal.innovationsslussen.ideaadmin.controller.IdeaAdminViewController.java
License:Open Source License
/** * The default render method./* w w w . j a va 2 s.co m*/ * * @param request the request * @param response the response * @param model the model * @return the view */ @RenderMapping() public String showIdeaAdmin(RenderRequest request, RenderResponse response, final ModelMap model) { ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); long scopeGroupId = themeDisplay.getScopeGroupId(); long companyId = themeDisplay.getCompanyId(); Layout ideaLayout; ideaLayout = getFriendlyURLLayout(scopeGroupId); long ideaPlid = ideaLayout.getPlid(); model.addAttribute("ideaPlid", ideaPlid); model.addAttribute("ideaPortletName", IdeaPortletsConstants.PORTLET_NAME_IDEA_PORTLET); // Search Container parameters int searchCur = ParamUtil.getInteger(request, "cur", 1); int searchDelta = ParamUtil.getInteger(request, "delta", SEARCH_CONTAINER_DELTA_DEFAULT); int totalCount = 0; int start = (searchCur - 1) * searchDelta; int offset = searchDelta; List<Idea> ideas = ideaService.findIdeasByGroupId(companyId, scopeGroupId, start, offset); totalCount = ideaService.findIdeaCountByGroupId(companyId, scopeGroupId); model.addAttribute("delta", searchDelta); model.addAttribute("totalCount", totalCount); model.addAttribute("ideas", ideas); return "view"; }