Example usage for com.liferay.portal.kernel.theme ThemeDisplay getScopeGroupId

List of usage examples for com.liferay.portal.kernel.theme ThemeDisplay getScopeGroupId

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.theme ThemeDisplay getScopeGroupId.

Prototype

public long getScopeGroupId() 

Source Link

Document

Returns the ID of the scoped or sub-scoped active group (e.g.

Usage

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";
}