1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.imagegallery.util;
16  
17  import com.liferay.portal.kernel.portlet.LiferayWindowState;
18  import com.liferay.portal.kernel.util.ParamUtil;
19  import com.liferay.portal.theme.ThemeDisplay;
20  import com.liferay.portal.util.PortalUtil;
21  import com.liferay.portal.util.WebKeys;
22  import com.liferay.portlet.imagegallery.model.IGFolder;
23  import com.liferay.portlet.imagegallery.model.IGFolderConstants;
24  import com.liferay.portlet.imagegallery.model.IGImage;
25  import com.liferay.portlet.imagegallery.service.IGFolderLocalServiceUtil;
26  
27  import java.util.Collections;
28  import java.util.List;
29  
30  import javax.portlet.PortletURL;
31  import javax.portlet.RenderResponse;
32  
33  import javax.servlet.http.HttpServletRequest;
34  
35  /**
36   * <a href="IGUtil.java.html"><b><i>View Source</i></b></a>
37   *
38   * @author Brian Wing Shun Chan
39   */
40  public class IGUtil {
41  
42      public static void addPortletBreadcrumbEntries(
43              IGImage image, HttpServletRequest request,
44              RenderResponse renderResponse)
45          throws Exception {
46  
47          IGFolder folder = image.getFolder();
48  
49          addPortletBreadcrumbEntries(folder, request, renderResponse);
50  
51          PortletURL portletURL = renderResponse.createRenderURL();
52  
53          portletURL.setParameter("struts_action", "/image_gallery/view_image");
54          portletURL.setParameter("imageId", String.valueOf(image.getImageId()));
55  
56          PortalUtil.addPortletBreadcrumbEntry(
57              request, image.getName(), portletURL.toString());
58      }
59  
60      public static void addPortletBreadcrumbEntries(
61              long folderId, HttpServletRequest request,
62              RenderResponse renderResponse)
63          throws Exception {
64  
65          if (folderId == IGFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
66              return;
67          }
68  
69          IGFolder folder = IGFolderLocalServiceUtil.getFolder(
70              folderId);
71  
72          addPortletBreadcrumbEntries(folder, request, renderResponse);
73      }
74  
75      public static void addPortletBreadcrumbEntries(
76              IGFolder folder, HttpServletRequest request,
77              RenderResponse renderResponse)
78          throws Exception {
79  
80          String strutsAction = ParamUtil.getString(request, "struts_action");
81  
82          PortletURL portletURL = renderResponse.createRenderURL();
83  
84          if (strutsAction.equals("/journal/select_image_gallery") ||
85              strutsAction.equals("/image_gallery/select_folder")) {
86              ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
87                  WebKeys.THEME_DISPLAY);
88  
89              portletURL.setWindowState(LiferayWindowState.POP_UP);
90  
91              portletURL.setParameter("struts_action", strutsAction);
92  
93              PortalUtil.addPortletBreadcrumbEntry(
94                  request, themeDisplay.translate("image-home"),
95                  portletURL.toString());
96          }
97          else {
98              portletURL.setParameter("struts_action", "/image_gallery/view");
99          }
100 
101         List<IGFolder> ancestorFolders = folder.getAncestors();
102 
103         Collections.reverse(ancestorFolders);
104 
105         for (IGFolder ancestorFolder : ancestorFolders) {
106 
107             portletURL.setParameter(
108                 "folderId", String.valueOf(ancestorFolder.getFolderId()));
109 
110             PortalUtil.addPortletBreadcrumbEntry(
111                 request, ancestorFolder.getName(), portletURL.toString());
112         }
113 
114         portletURL.setParameter(
115             "folderId", String.valueOf(folder.getFolderId()));
116 
117         PortalUtil.addPortletBreadcrumbEntry(
118             request, folder.getName(), portletURL.toString());
119     }
120 
121 }